• 15、函数


    函数分内置函数与自定义函数

    自定义函数

    #语法
    def 函数名(参数列表):
        函数体

    实例

    #函数定义要在调用之前
    #hello  world!
    def hello():    #函数定义
        print("hello world!")
    
    hello()          #函数调用
    
    #求合
    def sum_num(x):  #函数定义
        count = 0
        for i in range(x):
            count += i
        return count
    
    print(sum_num(10))      # 45  函数调用

    按值传参与按引用传参

    #按值传参
    def
    change(x): x = 10 print(x) # 10 a = 1 change(a) print(a) # 1
    按引用传参
    def
    change(x): x.append([4,5,6]) print(x) # [1, 2, 3, [4, 5, 6]] a = [1,2,3] print(a) #[1, 2, 3] change(a) print(a) # [1, 2, 3, [4, 5, 6]]

    参数

    必须参数:调用函数时必须传入一个参数,不然传报错

    def change(x):
        x.append([4,5,6])
        print(x) 
    change()   #TypeError: change() missing 1 required positional argument: 'x'

    关键字参数:根据关键字匹配参数,不用与声明顺序相同

    def printinfo(name, age):
        print(name)
        print(age)
    
    printinfo(age=50, name="car")  #car 50

    默认参数:没有传入参数刚使用默认值

    def printinfo(name="char", age="27"):
        print(name,end=" ")
        print(age)
    
    printinfo(age=26) #char 26

    不定长参数:参数不确定数量,一个或者N个

    def printinfo(arg1, *vartuple):  # *vartuple存入所有未命名的参数他是一个元组,如果没有指定则为空元组
        print(arg1)
        for var in vartuple:
            print(var)
    
    printinfo(10) #10
    printinfo(10,20,30,40) #10,20,30,40

    匿名函数:使用lambda来创建,lambda只是一个表达式,比def简单

    lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

    #求两数和
    def sum(a,b):
        print(a+b)
    
    sum(10,10) #20
    
    sum = lambda a,b:a+b
    print(sum(10,20)) #30

     动态参数

    def show(*arg): #*arg默认为元组类型
        print(arg,type(arg))
    show(1,2,3,4) #(1, 2, 3, 4) <class 'tuple'>
    
    def show(**arg):  #**arg默认为字点类型
        print(arg,type(arg))
    show(u=1,uu=2,uuu=3)   #{'u': 1, 'uu': 2, 'uuu': 3} <class 'dict'>
    
    def show(*args, **kwargs):
        print(args,type(args))
        print(kwargs,type(kwargs))
    l =[1,2,3,4]
    d = {"u":1, "uu":2}
    show(1,2,3,4,u=1,uu=2)
    #(1, 2, 3, 4) <class 'tuple'>
    #{'u': 1, 'uu': 2} <class 'dict'>

    show(l,d)
    #([1, 2, 3, 4], {'u': 1, 'uu': 2}) <class 'tuple'>
    #{} <class 'dict'>

    show(*l, **d)
    #(1, 2, 3, 4) <class 'tuple'>
    #{'u': 1, 'uu': 2} <class 'dict'>
    
    
    s = "{0} is {1}"
    result1 = s.format("alert", "sb")
    print(result1) #alert is sb

    l = ["alert", "sb"]
    result2 = s.format(*l)
    print(result2) #alert is sb


    s = "{name} is {age}"
    r1 = s.format(name="alert",age="sb")
    print(r1) #alert is sb
    d = {"name":"alert", "age":"sb"}

    r2 = s.format(**d)
    print(r2) #alert is sb
     
  • 相关阅读:
    关于组件(包括控件)设计的一些建议
    请教:不能运行asp程序了??
    (ASP.NET)几个概念与区别
    突然想起99年的那次离别
    什么是计划
    服务器控件开发基础应用设计期Attribute
    收藏些API资料
    今天的感觉呐喊
    重新启用本blog
    关于Clone
  • 原文地址:https://www.cnblogs.com/jp-mao/p/6306525.html
Copyright © 2020-2023  润新知