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开发环境搭建
Dec 16 Python
浅谈python装饰器探究与参数的领取
Dec 01 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
用python给自己做一款小说阅读器过程详解
Jul 11 Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 Python
解决jupyter notebook 出现In[*]的问题
Apr 13 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
May 16 Python
matlab、python中矩阵的互相导入导出方式
Jun 01 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 21 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运行环境教程
2015/02/12 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
详解python中xlrd包的安装与处理Excel表格
2016/12/16 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
python实现汽车管理系统
2018/11/30 Python
python 同时读取多个文件的例子
2019/07/16 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
django创建超级用户过程解析
2019/09/18 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
编辑求职信样本
2013/12/16 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
中国梦口号
2014/06/13 职场文书
初中团委工作总结
2015/08/13 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python