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


Posted in Python onAugust 13, 2019

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
python中split方法用法分析
Apr 17 Python
Python3使用requests发闪存的方法
May 11 Python
python re模块findall()函数实例解析
Jan 19 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
Python使用贪婪算法解决问题
Oct 22 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
May 26 Python
Python Pandas知识点之缺失值处理详解
May 11 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 #Python
python基于json文件实现的gearman任务自动重启代码实例
Aug 13 #Python
Python 写入训练日志文件并控制台输出解析
Aug 13 #Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 #Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 #Python
Django项目中实现使用qq第三方登录功能
Aug 13 #Python
一篇文章搞定Python操作文件与目录
Aug 13 #Python
You might like
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
检查用户名是否已在mysql中存在的php写法
2014/01/20 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
关于Vue Webpack2单元测试示例详解
2017/08/14 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
python异常和文件处理机制详解
2016/07/19 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
Python修改DBF文件指定列
2020/12/19 Python
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
工商治理实习生的自我评价分享
2014/02/20 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
应届生个人的求职(自荐信范文2篇)
2019/08/23 职场文书
利用Python实时获取steam特惠游戏数据
2022/06/25 Python