zoukankan      html  css  js  c++  java
  • Python-12-函数_01_函数定义

    1、函数定义
    2、函数优点

     1 # 1、python中函数定义方法:
     2 
     3 def test(x):
     4     "The function definitions"
     5     x += 1
     6     return x
     7 
     8 
     9 # def:定义函数的关键字
    10 # test:函数名
    11 # ():内可定义形参
    12 # "":文档描述(非必要,但是强烈建议为你的函数添加描述信息)!!!!!!
    13 # x+=1:泛指代码块或程序处理逻辑
    14 # return:定义返回值
    15 
    16 # 调用运行:可以带参数也可以不带
    17 # 函数名()
    18 
    19 # 2、例子:
    20 def test(x):
    21     x += 1
    22     return x
    23 y = test(3)
    24 print(y)
    25 
    26 # 3、函数优点
    27 
    28 # 1.代码重用
    29 # 2.保持一致性,易维护
    30 # 3.可扩展性
    31 # 过程:没有return返回值的函数
    32 
    33 # 4、返回个数、类型
    34 # 返回值数=0:返回None
    35 # 返回值数=1:返回object
    36 # 返回值数>1:返回tuple

    3、形参、实参、位置参数和关键字、默认参数、参数组

     1 # 5、形参、实参、位置参数和关键字、默认参数、参数组
     2 # 实参与形参位置一一对应;关键字:位置无需固定
     3 # **字典  *列表
     4 # 参数组    位置参数
     5 def test(x,*args):
     6     print(x)            # 结果:1
     7     print(args)         # 结果:(2, 3, 4, 5, 6)
     8     print(args[0])      #结果:2
     9 test(1,2,3,4,5,6)
    10 
    11 # 关键字
    12 def test(x,**kwargs):
    13     print(x)            # 结果:1
    14     print(kwargs)       # 结果:{'y': 2}
    15 test(1,y=2)
    16 
    17 def test(x,*args,**kwargs):
    18     print(x)            # 结果:1
    19     print(args)         # 结果:(1, 2, 3, 4, 5, 4)
    20     print(kwargs)       # 结果:{'y': 2, 'z': 3}
    21 test(1,1,2,3,4,5,4,y=2,z=3)
    22 test(1,*[1,2,3],**{"y":1})      # 结果:1    (1, 2, 3)    {'y': 1}
    """
        实参传递方式
            位置传参
                序列传参
            关键字传参
                字典传参
    """
    
    
    def fun1(a, b, c):
        print("a=", a)
        print("b=", b)
        print("c=", c)
    
    # 位置传参:实参与形参的位置依次对应。
    fun1(2,1,3)
    
    # 序列传参:实参用*将序列拆解后与形参的位置依次对应
    fun1(*[1,2,3])
    
    # 关键字传参:实参根据形参的名字进行对应。
    fun1(b = 2,a = 1,c = 3)
    
    # 字典传参:实参用**将字典拆解与形参的名字进行对应。
    fun1(**{"b":2,"a":1,"c":3})
    
    
    # 默认(缺省)参数
    def fun2(a=0, b=0, c=0):
        print("a=", a)
        print("b=", b)
        print("c=", c)
    # 可以结合关键子传参,随意选择参数
    fun2(b = 2)
    
    def fun3(a, b=0, c=0):
        print("a=", a)
        print("b=", b)
        print("c=", c)
    
    # a 是位置参数,必须传递
    fun3(1)
    """
        形参传递方式
        位置形参
            星号元组形参
    """
    
    # 位置形参
    def fun1(a,b,c):
        pass
    
    # 星号元组形参:收集多余位置形参
    def fun2(*args):
        # 对于函数而言,args就是元组
        print(len(args),args)
    
    fun2()
    fun2(1)
    fun2(1,2)
    
    #练习:定义函数,累加整数。
    
    
    def fun3(a,*args):
        # 对于函数而言,args就是元组
        print(len(args),args)
    
    fun3(1)
    """
        形参传递方式
            命名关键字形参
    """
    
    
    # 命名关键字形参:强制实参使用关键字传递。
    def fun1(*, a, b):
        print(a, b)
    
    
    # fun1(1,2)
    # fun1(*[1,2])
    fun1(b=2, a=1)
    fun1(**{"b": 2, "a": 1})
    
    # a b 是位置传参,c,d 必须是关键字传参
    def fun2(a, b, *, c, d):
        print(a, b, c, d)
    
    
    fun2(1, 2, c=3, d=4)
    
    # 星号元组形参后的,位置形参是命名关键字形参。
    def fun3(*args, c, d):
        print(args, c, d)
    
    fun3(3,4,4,5665,d = 9,c=5)
    
    # 练习:print函数定义
    # print(*args, sep=' ', end='
    ', file=None)
    # 打印(内容,sep = “连接符号”, end = "结束符号")
    print("asdf",1343,sep = "$",end = "
    
    
    
    
    ")
    print("ok")
    
    # 双型号字典形参:可以收集多余的字典关键字实参
    def fun4(**kwargs):
        # 对于函数内部而言,就是字典
        print(kwargs)
    
    # fun4(1,2,3)
    fun4(a = 1,c = "ccccc",d = [1,2,3],e = True)
    
    def fun5(*args,**kwargs):
        print(args,kwargs)
    
    fun5()
    fun5(23,34,a = "adsf",qtx = "qtx")
  • 相关阅读:
    第51天 [js] 字符串相连有哪些方式?哪种最好?为什么?
    第52天 [js] 什么是事件委托?它有什么好处?能简单的写一个例子吗?
    np.ndarray与Eigen::Matrix之间的互相转换
    C++向assert加入错误信息
    CeiT:训练更快的多层特征抽取ViT
    CoAtNet: 90.88% Paperwithcode榜单第一,层层深入考虑模型设计
    正式启用Danube 官方站点
    go 编译报错 package embed is not in GOROOT (/usr/local/go/src/embed)
    cloudreve兼容acme.sh脚本
    Git的交叉编译
  • 原文地址:https://www.cnblogs.com/newmet/p/9946495.html
Copyright © 2011-2022 走看看