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程序设计入门(5)类的使用简介
Jun 16 Python
Python深入学习之对象的属性
Aug 31 Python
tensorflow识别自己手写数字
Mar 14 Python
使用Python设计一个代码统计工具
Apr 04 Python
python实现复制文件到指定目录
Oct 16 Python
Pandas时间序列基础详解(转换,索引,切片)
Feb 26 Python
python为什么会环境变量设置不成功
Jun 23 Python
Python文件夹批处理操作代码实例
Jul 21 Python
Python Pivot table透视表使用方法解析
Sep 11 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
如何创建一个Flask项目并进行简单配置
Nov 18 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
基于文本的访客签到簿
2006/10/09 PHP
PHP 高手之路(一)
2006/10/09 PHP
php中计算程序运行时间的类代码
2012/11/03 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
浅谈PHP的反射机制
2016/12/15 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
Python运算符重载详解及实例代码
2017/03/07 Python
Python上下文管理器和with块详解
2017/09/09 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
数控专业大学生的自我鉴定
2013/11/13 职场文书
财务总经理岗位职责
2014/02/16 职场文书
2014国培学习感言
2014/03/05 职场文书
出纳担保书范文
2014/04/02 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python
Python中文纠错的简单实现
2021/07/07 Python