• Python学习----Day07


    函数

    • 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
    • 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

    定义一个函数

    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
    • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
    • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    • 函数内容以冒号 : 起始,并且缩进。
    • return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

     

    语法

    Python 定义函数使用 def 关键字,一般格式如下:

    1. def 函数名(参数列表):
    2. 函数体

     函数调用

    定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。

    1. # 定义函数
    2. def printme( str ):
    3. # 打印任何传入的字符串
    4. print (str)
    5. return
    6. # 调用函数
    7. printme("我要调用用户自定义函数!")
    8. printme("再次调用同一函数")

    传入的参数的类型检查

    1. def my_ad(x):
    2.     if not isinstance(x,(int,float)):
    3.         raise TypeError#抛出异常
    4.     print("kk")

    参数

    以下是调用函数时可使用的正式参数类型

    • 必需参数
    • 关键字参数
    • 默认参数
    • 不定长参数

    必需参数

    必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

    调用 printme() 函数,你必须传入一个参数,不然会出现语法错误

    1. def printme( str ):
    2. "打印任何传入的字符串"
    3. print (str)
    4. return
    5. # 调用 printme 函数,不加参数会报错
    6. printme()

    关键字参数

    • 关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
    • 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
    • 关键字参数必须放在普通参数的后面  
    1. #可写函数说明
    2. def printme( str ):
    3. "打印任何传入的字符串"
    4. print (str)
    5. return
    6. #调用printme函数
    7. printme( str = "菜鸟教程")
    命名关键字参数:限定后边的参数必须是以关键字形式传参

    1. def asd(a,b,*,c,d):#*后面的c,d必须以关键字的形式传参
    2. print(a)
    3. print(b)
    4. asd(1,2,c = 3,b = 4)

    默认参数

     调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值

    默认值只会执行一次

    官方推荐:默认参数尽量使用不可变类型

    1. #可写函数说明
    2. def printinfo( name, age = 35 ):
    3. "打印任何传入的字符串"
    4. print ("名字: ", name)
    5. print ("年龄: ", age)
    6. return
    7. #调用printinfo函数
    8. printinfo( age=50, name="runoob" )
    9. print ("------------------------")
    10. printinfo( name="runoob" )
    11. 结果
    12. 名字: runoob
    13. 年龄: 50
    14. ------------------------
    15. 名字: runoob
    16. 年龄: 35

     return 语句

    return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的 return 语句返回 None。之前的例子都没有示范如何返回数值,以下实例演示了 return 语句的用法:

    1. # 可写函数说明
    2. def sum( arg1, arg2 ):
    3. # 返回2个参数的和."
    4. total = arg1 + arg2
    5. print ("函数内 : ", total)
    6. return total
    7. # 调用sum函数
    8. total = sum( 10, 20 )
    9. print ("函数外 : ", total)
    10. 结果
    11. 函数内 : 30
    12. 函数外 : 30

    可变参数

    *函数:常见的 *args args变量指向一个tuple(元组)对象

    自动接收未匹配的位置参数,到一个元组对象中

    1. def asd(a,*b):
    2. print(a)
    3. print(b)
    4. asd(123)
    5. 运行结果
    6. 123
    7. ()
    8. asd(11,12,13,14,15)
    9. 运行结果
    10. 11
    11. (12,13,14,15)

    参数的解包开包

    参数类型是字符串、列表、元组、集合、字典的时候,可以解包

    传递实参时,可以根据序列类型的参数前面添加一个*

    自动将序列中的元素以此作为参数传递

    实例

    1. def asd(a,b,c):
    2. print(a)
    3. print(b)
    4. print(b)
    5. asd(*"123")
    6. 1
    7. 2
    8. 3
    9. asd(*[4,5,6])
    10. 4
    11. 5
    12. 6
    1. def asd(a,b,c):
    2. print(a)
    3. print(b)
    4. print(b)
    5. d = {
    6. "a" : "as"
    7. "b" : "18"
    8. "c" : "吃饭"
    9. }
    10. asd(*d)
    11. a
    12. b
    13. c
    14. asd(**d)
    15. a: as
    16. b: 18
    17. c: 吃饭

    参数的解包与可变参数一起作用

    1. def asd(a,*arge):
    2. print(a)
    3. print(args)
    4. asd(100,*(1,2,3))

    函数递归

            函数作为一种代码封装,可以被其他程序调用,当然,也可以被函数内部代码调用。这种函数定义中调用函数自身的方式称为递归。

    实例:求阶乘

    1. #计算阶乘:根据用户输入的整数n,计算并输出n的阶乘值
    2. def fact(n):#计算阶乘
    3. if n == 1:
    4. return 1
    5. else:
    6. return n * fact(n-1)
    7. num = eval(input("请输入一个正整数: "))
    8. print(fact(num))

    递归的使用方法

    • 找到递归关系,即把一个复杂的问题转化为与它形式相似、但规模较小的问题
    • 找到递归出口,即问题转化时,当规模足够小,可以直接求解 
  • 相关阅读:
    Day11OSI与TCP/IP协议簇以及物理层
    Docker创建enrollment token错误异常
    基于PHP+MySQL的高校实验室预约管理系统#毕业设计
    RK3588平台开发系列讲解(显示篇)MIPI DSI协议介绍之分层
    TinyPNG和Optimize.js区别?
    计算机网络必须知道的点
    MongoDB基础之查询文档操作
    英特尔12代酷睿架构,十二代酷睿架构
    叮咚!请互联网人签收这份工作技能攻略
    5.5 框架程序的执行顺序
  • 原文地址:https://blog.csdn.net/weixin_74227828/article/details/133801785