Python学习笔记之函数的定义和作用域实例详解

作者:Johnny丶me 时间:2021-09-09 11:05:30 

本文实例讲述了Python函数的定义和作用域。分享给大家供大家参考,具体如下:

定义函数

默认参数: 可以向函数中添加默认参数,以便为在函数调用中未指定的参数提供默认值


# 如果调用 cylinder_volume 函数时,不提供radius参数,那么radius的值为5
def cylinder_volume(height, radius=5):
 pi = 3.14159
 return height * pi * radius ** 2

向函数中的参数传值的方法:按照位置和按照名称


cylinder_volume(10, 7) # 1539.3791
cylinder_volume(height=10, radius=7) # 1539.3791
cylinder_volume(radius=7, height=10) # 1539.3791

注意:上述第一种是常用的按照位置传值,第二种和第三种是按照名称传值

定义函数[相关练习]

写一个名称为 population_density 的函数,该函数有两个参数 population 和 land_area,并根据这两个值返回人口密度。

解决方案:


def population_density(population, land_area):
 return population / land_area
test1 = population_density(10, 1)
expected_result1 = 10
print("expected result: {}, actual result: {}".format(expected_result1, test1)) # expected result: 10, actual result: 10.0
test2 = population_density(864816, 121.4)
expected_result2 = 7123.6902801
print("expected result: {}, actual result: {}".format(expected_result2, test2)) # expected result: 7123.6902801, actual result: 7123.690280065897

写一个叫做 readable_timedelta 的函数,该函数有一个参数:整数 days,并返回一个表示由多少周多少天组成的字符串。例如 readable_timedelta(10) 应返回“1 week(s) and 3 day(s).”。

解决方案:


def readable_timedelta(days):
 weeks = int(days / 7)
 day = days % 7
 return str(weeks) + ' week(s) and ' + str(day) + ' day(s).'
print(readable_timedelta(10)) # 1 week(s) and 3 day(s).

函数中的变量作用域

  • 变量作用域是指可以在程序的哪个部分引用或使用某个变量。

  • 在函数中使用变量时,务必要考虑作用域。如果变量是在函数内创建的,则只能在该函数内使用该变量。你无法从该函数外面访问该变量。

错误的示例:


# This will result in an error
def some_function():
 word = "hello"
print(word)

这意味着你可以为在不同函数内使用的不同变量使用相同的名称, 正确的示例如下:


def some_function():
 word = "hello"
def another_function():
 word = "goodbye"

在函数之外定义的变量依然可以在函数内访问。


word = "hello"
def some_function():
 print(word)
print(word)

Best Practise:建议将变量定义在所需的最小作用域内。虽然函数可以引用在更大的作用域内定义的变量,但是通常不建议这么做,因为如果程序有很多变量,你可能不知道你定义了什么变量。

注意:Python 不允许函数修改不在函数作用域内的变量,执行下列代码,看发生了什么


egg_count = 0
def buy_eggs():
 egg_count += 12 # purchase a dozen eggs
buy_eggs()

此时会发生错误, 导致 UnboundLocalError : 当我们尝试将函数外的一个变量的值更改或重新赋值为另一个值时,我们将遇到这个错误, 但是这个原则仅适用于整数和字符串, 列表、字典、集合、类中可以在子程序中(子函数)通过修改局部变量达到修改全局变量的目的。

关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

来源:https://blog.csdn.net/Tyro_java/article/details/80725956

标签:Python,函数,作用域
0
投稿

猜你喜欢

  • 使用CSS3和RGBa创建超酷的按钮

    2009-06-02 12:41:00
  • Go语言实现超时的三种方法实例

    2023-06-22 18:32:43
  • Sql Server中的事务介绍

    2024-01-22 01:04:37
  • Mysql删除数据以及数据表的方法实例

    2024-01-22 19:53:04
  • mysql 导入导出数据

    2011-02-23 12:27:00
  • javascript 获取中文字符串长度

    2009-10-18 12:06:00
  • ASP.NET中MD5和SHA1密码保护算法的使用

    2007-08-24 09:18:00
  • Python中MySQLdb和torndb模块对MySQL的断连问题处理

    2024-01-29 02:05:25
  • 详解Python语法之模块Module

    2021-06-24 06:28:28
  • Window下安装JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程图解

    2024-01-26 22:24:12
  • go语言beego框架web开发语法笔记示例

    2024-05-21 10:25:22
  • 作符合用户体验的input输入框

    2008-01-10 12:21:00
  • 教你如何在SQL Server计算机列和平均值

    2009-01-20 15:10:00
  • distinct 多列问题结合group by的解决方法

    2024-01-21 11:18:23
  • python检测lvs real server状态

    2021-12-12 21:21:36
  • Python重新加载模块的实现方法

    2021-07-05 16:05:18
  • 一文掌握MySQL表的创建和约束

    2024-01-25 18:36:53
  • SQLSERVER数据库升级脚本图文步骤

    2024-01-27 10:20:26
  • Python tkinter的grid布局及Text动态显示方法

    2023-06-28 14:54:00
  • 用asp获取微软安全更新列表的代码 小偷程序

    2011-02-24 11:19:00
  • asp之家 网络编程 m.aspxhome.com