作为新手自学Python的第九天,技术低微,希望可以通过这种方式督促自己学习。

个人学习环境:python3.9,PyCharm 2021.3.2 (Community Edition)

———————————————————————————————————————————

函数就是执行特定任务和完成特定功能的一段代码

为什么需要函数

复用代码

隐藏实现细节

提高可维护性

提高可读性便于调试

1、函数的创建和调用

1.1 函数的创建:

def 函数名 ([输入参数]):

函数体

[return xxx]

def calc(a, b):c = a + breturn c

1.2 函数的调用:

函数名 ([实际参数])

result = calc(10, 20)
print(result)

2、函数的参数传递

函数调用的参数传递

位置实参:根据形参对应的位置进行实参传递

def cale(a, b): # a, b称为形式参数,简称形参,形参的位置出现在函数的定义处c = a + breturn c
​
result = cale(10, 20)   # 10, 20称为实际参数的值,简称实参,实参的位置出现在函数的调用出
print(result)

关键字实参:根据形参名称进行实参传递

res = cale(b=10, a=20)  # = 左侧的变量的名称称为关键字参数
print(res)

3、函数的返回值

函数返回多个值时,结果为元组

def fun(num):odd = []    # 存奇数even = []   # 存偶数for i in num:if i%2:     # 判断余数是否为0,python中0的布尔值为False,非0的布尔值为Trueodd.append(i)   # i%2为True时,将i存入odd[]else:even.append(i)  # i%2为False时,将i存入even[]return odd, even
​
print(fun([10, 29, 34, 23, 44, 53, 55]))
"""
结果为:
([29, 23, 53, 55], [10, 34, 44])
"""

函数的返回值:

(1)如果函数没有返回值(即函数执行完毕不需要给调用处提供数据),return可以省略

(2)函数的返回值是1个,直接返回类型

(3)函数的返回值是多个,则返回的结果为元组

4、函数的参数定义

4.1 函数定义默认值参数

函数定义时给形参设置默认值,只有与默认值不符的时候才需要传递实参

def fun(a, b=10):print(a, b)
​
fun(100)        # 100 10
fun(20, 30)     # 20 30

4.2 个数可变的位置参数

定义函数时,可能无法事先确定传递的位置实参的个数时,使用可变的位置参数

使用*定义个数可变的位置形参

结果是一个元组

def fun(*args):print(args)
​
​
fun(10)
fun(10, 20, 30)
"""
结果为:
(10,)
(10, 20, 30)
"""

可变的位置参数只能是1个

4.3 个数可变的关键字形参

定义函数时,无法事先确定传递的关键字实参的个数时,使用可变的关键字形参

使用**定义个数可变的关键字形参

结果为一个字典

def fun(**args):print(args)
​
​
fun(a=10)
fun(a=10, b=20, c=30)
"""
结果为:
{'a': 10}
{'a': 10, 'b': 20, 'c': 30}
"""

可变的关键字参数只能是1个

在一个函数的定义过程中,既有个数可变的关键字形参,也有个数可变的位置形参,要求个数可变的位置形参放在个数可变的关键字形参之前

def fun(a, b, c):   # a, b, c在函数的定义处,是形式参数print('a=', a)print('b=', b)print('c=', c)
​
​
fun(10, 20, 30)     # 位置参数
lst = [11, 22, 33]
print('-------------')
fun(*lst)           # 在函数调用时将列表中的每个元素都转换为位置实参传入
print('-------------')
fun(a=100, c=300, b=200)    # 关键字参数
print('-------------')
dic = {'a': 111, 'b': 222, 'c': 333}
fun(**dic)          # 在函数调用时,将字典的键值对都转换为关键字实参传入
print('-------------')
"""
结果为:
a= 10
b= 20
c= 30
-------------
a= 11
b= 22
c= 33
-------------
a= 100
b= 200
c= 300
-------------
a= 111
b= 222
c= 333
-------------
"""

需求:c,d只能采用关键字实参传递

def fun4(a, b, *, c, d):    # 从*之后的参数在调用时,只能采用关键字传递print('a=', a)print('b=', b)print('c=', c)print('d=', d)
​
​
# fun4(10, 20, 30, 40)    位置实参传递,此时c,d参数传递不合规
fun4(a=19, b=29, c=39, d=49)    # 关键字实参传递
fun4(18, 28, c=38, d=48)    # 前两个是位置实参,后两个是关键字实参
"""
结果为:
a= 19
b= 29
c= 39
d= 49
a= 18
b= 28
c= 38
d= 48
"""

函数定义时的形参的顺序问题

def fun5(a, b, *, c, d, **args):pass
​
​
def fun6(*args, **args2):pass
​
​
def fun7(a, b=10, *args, **args2):pass

5、变量的作用域

作用域:程序代码能访问的该变量的区域

根据变量的有效范围可分为:

(1)局部变量:在函数内定义并使用的变量,只在函数内部有效,局部变量使用global声明,实际上为全局变量

(2)全局变量:函数体外定义的变量,作用于函数内外

def fun(a, b):c = a + b  # c为局部变量,a、b为形参,作用范围也是函数内部,相当于局部变量print(c)
​
​
name = '萨贝尔'  # name的作用范围为函数内外部皆可 ——> 全局变量
print(name)
​
​
def fun2():print(name)
​
​
fun2()
​
​
def fun3():global age  # 局部变量使用global声明,实际上为全局变量age = 20print(age)
​
​
fun3()
print(age)

global声明方式只能在函数内使用

Python自学第九天——函数相关推荐

  1. Python自学记录——返回函数、匿名函数、装饰器与偏函数

    国庆节快乐~~虽说今天是假期的最后一天.. 好久没学习Python了..值得高兴的是 <怪物猎人:世界>目前所有的龙我(统枪)都打过一遍了 (/得意). 正题,开始学习.记录: 返回函数 ...

  2. python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

    python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...

  3. Python练习题——第九题:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n

    Python练习题第九题 题目: 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+-+1/n,当输入n为奇数时,调用函数1/1+1/3+-+1/n #2019/12/26/18:16def f ...

  4. 无字天书之Python第九页(函数)

    博客目录 传送门 函数 定义函数以及使用以及规则 简单使用(参数的传递) 变长度传递参数 变量作用域 匿名函数 递归函数 过年不停更之第三更 传送门 无字天书之Python第一页 无字天书之Pytho ...

  5. python课程内容-Python自学难吗?有哪些课程内容?

    自学一门技能,本身就有难度,更何况还是编程类型的Python,要是有兴趣还好说,兴趣是 原始动力.但是光有兴趣还远远不够,要足够坚持才能学有所成.那么Python自学难吗?本 文将为大家来解答! 前期 ...

  6. 自学python考哪些证书-Python自学难吗?有哪些课程内容?

    自学一门技能,本身就有难度,更何况还是编程类型的Python,要是有兴趣还好说,兴趣是 原始动力.但是光有兴趣还远远不够,要足够坚持才能学有所成.那么Python自学难吗?本 文将为大家来解答! 前期 ...

  7. Python自学难吗?Python课程主要学些什么内容?

    自学一门技能,本身就有难度,更何况还是编程类型的Python,要是有兴趣还好说,兴趣是原始动力.但是光有兴趣还远远不够,要足够坚持才能学有所成.那么Python自学难吗?本文将为大家来解答! 前期可以 ...

  8. java和python自学教程视频_免费视频教程,2019年最新Java、PYthon、web视频

    干货视频,培训机构最新java.Python.web前端.人工智能视频(基础班+就业班).价值几万的Java.PYthon.web.人工智能视频教程, 为还在学习迷茫的你提供一个学习Java.Pyth ...

  9. Python自学路线图之Python进阶

    Python自学路线图的第二个阶段是Python进阶学习,自学完后需要掌握的Python技能: 1.自学Linux操作系统,熟练使用Linux操作系统: 自学网络编程,掌握网络编程相关技术, 能够实现 ...

最新文章

  1. 我的阿里梦——淘宝前端必备技能
  2. 性能测试、负载测试、压力测试的区别
  3. 图片三:numpy制作雪碧图(如何将多个图片拼接成一张图片)
  4. 线段树-HDU5737-这题有点神
  5. LeetCode 445 分发饼干
  6. yum install ruby出错:error downloading packages
  7. python合法的字符串_Python判断字符串是否为合法标示符操作
  8. Android基础之图片的压缩算法
  9. 团队管理(二)-敏捷开发最佳团队协作管理平台(TAPD)
  10. 华为服务器系统图标,服务器图标
  11. PMP之采购管理过程组中的合同类型辨析
  12. 原神角色展示(HTML+CSS)
  13. 提高github下载速度的方法
  14. 仿微信、qq聊天,@好友功能
  15. ASF网站自带python脚本完成sentinel-1数据自动下载
  16. Qt的基本控件——显示控件
  17. 【计算机网络13】网络安全
  18. windows查看系统信息的方法
  19. 51定时中断系统控制LED点阵屏显示逐帧动画
  20. RTKLIB中利用Kalman滤波进行伪距单点定位

热门文章

  1. 小程序流量主开通技巧分享
  2. C语言一维数据中2[arry]问题
  3. 微软修复工具_GitHub 月榜第 3,微软的老照片修复工具火了
  4. php根据经纬度计算距离大小,PHP 根据经纬度计算距离的简单示例
  5. 手机黑屏时闪屏怎么回事_电脑总是黑屏,闪屏是怎么回事啊
  6. 教你如何解决vue跨域问题(vue cli3)
  7. Redis学习笔记,保姆级别!!学不会你打我!
  8. 虚拟机VMware安装Ubuntu20.04
  9. 小程序给绑定的公众号推送模板消息
  10. vim复制单个字符_vim复制单个字符_[转载]vim下的复制粘贴