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

  • 时间:
  • 浏览:11

本文真例报告了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

留意:上述第1种是经常使用的依照地位传值,第2种战第3种是依照称号传值

界说函数[相干操练]

写1个称号为 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

写1个叫做 readable_timedelta 的函数,该函数有1个参数:整数 days,并前往1个暗示由几周几天构成的字符串。比方 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 : 当我们测验考试将函数中的1个变量的值变动或从头赋值为另外一个值时,我们将碰到那个毛病, 可是那个本则仅合用于整数战字符串, 列表、字典、汇合、类中能够正在子法式中(子函数)经由过程修正部分变量到达修正齐局变量的目标。

闭于Python相干内容感爱好的读者可检察本站专题:《Python函数利用技能总结》、《Python里背工具法式设想进门取进阶教程》、《Python数据构造取算法教程》、《Python字符串操纵技能汇总》、《Python编码操纵技能总结》及《Python进门取进阶典范教程》

期望本文所述对各人Python法式设想有所帮忙。