Python学习笔记之函数的定义和作用域实例详解
本文实例讲述了Python函数的定义和作用域。分享给大家供大家参考,具体如下:
定义函数
默认参数:可以向函数中添加默认参数,以便为在函数调用中未指定的参数提供默认值
#如果调用cylinder_volume函数时,不提供radius参数,那么radius的值为5 defcylinder_volume(height,radius=5): pi=3.14159 returnheight*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,并根据这两个值返回人口密度。
解决方案:
defpopulation_density(population,land_area): returnpopulation/land_area test1=population_density(10,1) expected_result1=10 print("expectedresult:{},actualresult:{}".format(expected_result1,test1))#expectedresult:10,actualresult:10.0 test2=population_density(864816,121.4) expected_result2=7123.6902801 print("expectedresult:{},actualresult:{}".format(expected_result2,test2))#expectedresult:7123.6902801,actualresult:7123.690280065897
写一个叫做readable_timedelta的函数,该函数有一个参数:整数days,并返回一个表示由多少周多少天组成的字符串。例如readable_timedelta(10)应返回“1week(s)and3day(s).”。
解决方案:
defreadable_timedelta(days): weeks=int(days/7) day=days%7 returnstr(weeks)+'week(s)and'+str(day)+'day(s).' print(readable_timedelta(10))#1week(s)and3day(s).
函数中的变量作用域
- 变量作用域是指可以在程序的哪个部分引用或使用某个变量。
- 在函数中使用变量时,务必要考虑作用域。如果变量是在函数内创建的,则只能在该函数内使用该变量。你无法从该函数外面访问该变量。
错误的示例:
#Thiswillresultinanerror defsome_function(): word="hello" print(word)
这意味着你可以为在不同函数内使用的不同变量使用相同的名称,正确的示例如下:
defsome_function(): word="hello" defanother_function(): word="goodbye"
在函数之外定义的变量依然可以在函数内访问。
word="hello" defsome_function(): print(word) print(word)
BestPractise:建议将变量定义在所需的最小作用域内。虽然函数可以引用在更大的作用域内定义的变量,但是通常不建议这么做,因为如果程序有很多变量,你可能不知道你定义了什么变量。
注意:Python不允许函数修改不在函数作用域内的变量,执行下列代码,看发生了什么
egg_count=0 defbuy_eggs(): egg_count+=12#purchaseadozeneggs buy_eggs()
此时会发生错误,导致UnboundLocalError:当我们尝试将函数外的一个变量的值更改或重新赋值为另一个值时,我们将遇到这个错误,但是这个原则仅适用于整数和字符串,列表、字典、集合、类中可以在子程序中(子函数)通过修改局部变量达到修改全局变量的目的。
关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。