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实现对比不同字体中的同一字符的显示效果
Apr 23 Python
Python素数检测的方法
May 11 Python
Python 制作糗事百科爬虫实例
Sep 22 Python
python 计算平均平方误差(MSE)的实例
Jun 29 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
Python使用Turtle库绘制一棵西兰花
Nov 23 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
详解python UDP 编程
Aug 24 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
pycharm代码删除恢复的方法
Jun 26 Python
python区块链持久化和命令行接口实现简版
May 25 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
PHP日期处理函数 整型日期格式
2011/01/12 PHP
php 函数中使用static的说明
2012/06/01 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
菜单效果
2006/10/14 Javascript
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
页面使用密码保护代码
2013/04/10 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
element ui 表格动态列显示空白bug 修复方法
2018/09/04 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
Python实现简单拆分PDF文件的方法
2015/07/30 Python
Python selenium的基本使用方法分析
2019/12/21 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
网络信息安全承诺书
2014/03/26 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
幸福家庭标语
2014/06/27 职场文书
论文评审意见
2015/06/05 职场文书
在职证明书模板
2015/06/15 职场文书
Java实现学生管理系统(IO版)
2022/02/24 Java/Android