• python基础知识之函数的定义及用法


    目录

    前言:

    一、函数的定义和调用

    1.函数的作用

    2.函数名的命名规范

    3.函数的返回值:return

    4.调用函数

    二、函数的参数

    1.函数形参和实参

    2.参数传递的两种形式:

    3.函数定义的三种形参:

    三、函数的作用域

    1.全局变量

    2.局部变量

    3.声明局部变量

    四、python内置函数

    前言:

    本文主要介绍python函数的定义和调用、函数的参数、函数的作用域、内置函数。

    一、函数的定义和调用

    1.函数的作用

    对特定的一些功能进行封装,提高代码的重用率,进而提升开发的效率,格式:

    nginx

    1. def 函数名()
    2. # 函数体

    2.函数名的命名规范

    1)可以由字母、数字及下划线(_)组成,但不能用数字开头,且不能使用python中的关键字。

    2)函数命名的风格: 单词之间下划线隔开(python中函数命名推荐这种风格), 大驼峰小驼峰写法 ,如:UserName、userName英文单词首字母大写。

    3.函数的返回值:return

    语法:return 表达式

    1)函数的返回值是由return来决定的,return后面写什么,函数的返回值就是什么

    2)如果函数中没有return,那么函数的返回值默认为 None

    3)return 后面没有任何内容,返回值也是None

    4)函数要返回多个数据,可以在return后面,每个数据之间用逗号隔开,调用函数之后接收到的是个元组形式的数据

    注意:return的作用除了返回结果外,也可以用于结束函数的运行,只要函数中执行到return,就直接返回内容,跳出函数,return后面的代码就不会执行

    4.调用函数

    函数名(),示例如下:

    swift

    1. def func():
    2. print('python666')
    3. return "abc", 4444
    4. print("99999999999999999999") # 该行不会被执行
    5. res = func()
    6. print(res)

    运行结果:

    awk

    1. C:\software\python\python.exe D:/myworkspace/test/test/test.py
    2. python666
    3. ('abc', 4444)
    4. Process finished with exit code 0

    二、函数的参数

    1.函数形参和实参

    定义的参数称为:形参

    调用实际传递的为:实参

    2.参数传递的两种形式:

    位置参数:按位置顺序进行传递

    关键字参数:通过关键字指定传给某个参数

    routeros

    1. # 位置参数(按位置顺序进行传递)
    2. def add_num(a, b, c): # a,b是形参,没有真正的值,用于接收实参
    3. return a + b - c
    4. res1 = add_num(67, 12, 1) # 此时传入的6712是实参
    5. print(res1)
    6. # 关键字参数(通过关键字指定传给某个参数)
    7. res2 = add_num(b=34, a=12, c=11)
    8. print(res2)
    9. # 参数混用时,位置参数写最前面,关键字参数写在后面,不能重复传
    10. res3 = add_num(30, c=12, b=12)
    11. print(res3)

    运行结果:

    awk

    1. C:\software\python\python.exe D:/myworkspace/test/test/test.py
    2. 78
    3. 35
    4. 30
    5. Process finished with exit code 0

    3.函数定义的三种形参:

    • 必需参数  如:def add_num(a, b, c) ,a,b,c三个参数都必须要传
    • 默认参数(缺省参数) 如:def add_num(a, b, c=99) ,c是默认参数,可以传,可以不传(不传时直接使用c=99)
    • 不定长参数:如:def add_num(a, b, *args, **kwargs) ,其中a和b是必需参数,*args 可以不传,也可以传多个,它接收必需参数、默认参数完之外的位置参数,以元组的形式保存,**kwargs 可以不传,也可以传多个,接收必需参数、默认参数之外的关键字参数,以字典的形式保存

    routeros

    1. def test(a, b, c, *args, **kwargs):
    2. print("a的值", a)
    3. print("b的值", b)
    4. print("c的值", c)
    5. print("*args的值", args)
    6. print("**kwargs的值", kwargs)
    7. va1 = test(11, 22, 33, 4, 3, 2)
    8. va2 = test(11, 5, 6, 7, g=33, k=22, f=12)
    9. print(va1, va2)

    运行结果(有None是因为函数中没有返回值,调用了两次函数因此打印了两个None):

    awk

    1. C:\software\python\python.exe D:/myworkspace/test/test/test.py
    2. a的值 11
    3. b的值 22
    4. c的值 33
    5. *args的值 (4, 3, 2)
    6. **kwargs的值 {}
    7. a的值 11
    8. b的值 5
    9. c的值 6
    10. *args的值 (7,)
    11. **kwargs的值 {'g': 33, 'k': 22, 'f': 12}
    12. None None
    13. Process finished with exit code 0

    扩展:不定长参数可以使用*对元组(列表也可以,但一般不用)进行拆包,**可以对字典进行拆包,拆包原理如下:

    apache

    1. # 拆包
    2. def func():
    3. return 11,22,33 # 当返回结果有多个值时,会以元组的形式返回
    4. c1 = func()
    5. print(c1) # 返回的是一个元组(11,22,33
    6. a,b,c =func() # 可以通过变量把返回的元组进行拆包,接收对应的值,a接收了11,b接收了22,c接收了33
    7. print(a,b,c) # 返回对应的元素11,22,33

    运行结果:

    awk

    1. C:\software\python\python.exe D:/myworkspace/test/test/test.py
    2. (11, 22, 33)
    3. 11 22 33
    4. Process finished with exit code 0

    拆包在自动化测试中有很大的作用,如果不理解,可以动手多敲几遍,以下是拆包示例:

    routeros

    1. def func(a, b, c):
    2. print('这是', a)
    3. print('这是', b)
    4. print('这是', c)
    5. # 利用***分别对元组、字典拆包:只能用在函数调用时使用
    6. # 对元组进行拆包
    7. func(*(1, 2, 3))
    8. print('-------分割线-------')
    9. tu = (4, 5, 6)
    10. func(*tu)
    11. print('-------分割线-------')
    12. # 对字典进行拆包, 注意**kwargs接收的是接收必需参数、默认参数之外的关键字参数
    13. # 因此字典的键要与函数的形参一致
    14. dic = {'a': 88, 'b': 90, 'c': 91}
    15. func(**dic)

    运行结果:

    awk

    1. C:\software\python\python.exe D:/myworkspace/test/test/test.py
    2. 这是 1
    3. 这是 2
    4. 这是 3
    5. -------分割线-------
    6. 这是 4
    7. 这是 5
    8. 这是 6
    9. -------分割线-------
    10. 这是 88
    11. 这是 90
    12. 这是 91
    13. Process finished with exit code 0

    三、函数的作用域

    1.全局变量

    直接定义在py文件(即模块)中的变量,叫全局变量,在该文件中任何地方都可以使用

    2.局部变量

    在函数内部定义的变量,叫做局部变量,只能在该函数内部使用,函数外部无法使用

    3.声明局部变量

    关键字:global 在函数内部声明全局变量。

    变量的查找过程:由内到外(先找函数自身的,没有再去外面找)。

    如果要在外部使用函数内部定义的局部变量,需要声明该变量,简单来说就是告诉程序,这个变量在这个模块内都能使用。

    python

    1. name = "张三" # 定义一个全局变量
    2. def func():
    3. # global a # 如果要声明全局变量,要加上这句
    4. a = 100 # 定义一个局部变量
    5. print(a)
    6. print(name)
    7. func() # 调用函数
    8. print("------分割线-----")
    9. print(name) # 全局变量哪里都能使用
    10. print(a) # 这是一个局部变量,打印a运行会报错说a没有被定义,如果要使用a就要声明a为全局变量
    11. print("------分割线-----")
    12. aa = 10
    13. def func():
    14. print(aa) # 变量的查找过程:由内到外(先找自身的,没有再去外面找)
    15. func()

    运行结果(因为报错了,所以后面的aa没有打印出来,只要声明全局变量就不会报错):

    awk

    1. C:\software\python\python.exe D:/myworkspace/test/test/test.py
    2. 100
    3. 张三
    4. ------分割线-----
    5. 张三
    6. Traceback (most recent call last):
    7. File "D:/myworkspace/test/test/test.py", line 12, in <module>
    8. print(a) # 这是一个局部变量,打印a运行会报错说a没有被定义,如果要使用a就要声明a为全局变量
    9. NameError: name 'a' is not defined
    10. Process finished with exit code 1

    四、python内置函数

    内置函数就是python编程语言中预先已经定义的函数,直接调用即可,常用的内置函数如下:

    • len():获取 列表\字符串\元组\字典 中的元素总数量(数据的长度)
    • eval():识别字符串中的python表达式
    • zip(): 聚合打包
    • max():获取数据中元素的最大值
    • min():获取数据中元素的最小值
    • sum():对元素进行求和

  • 相关阅读:
    HarmonyOS ArkTS Video组件的使用(七)
    【车载音视频电脑】嵌入式AI分析车载DVR,支持8路1080P
    Spark中宽依赖、窄依赖、Job执行流程
    网络安全(黑客)自学
    已经有 MESI 协议,为什么还需要 volatile 关键字?
    【Python从入门到进阶】37、selenium关于phantomjs的基本使用
    关于序列化协议,你需要知道的一些内容(3)
    【LSTM回归预测】基于斑马算法优化卷积神经网络结合注意力机制的长短记忆网络ZOA-CNN-LSTM-Attention实现风电功率多输入单输出回归预测附matlab代码
    阿里技术官整合的四大主流中间件笔记,让你高薪摸鱼,不再秃头背锅
    proxmox pve /dev/mapper/pve-root扩容
  • 原文地址:https://blog.csdn.net/MXB1220/article/details/127112918