• python-函数


    1、函数
    实现某个功能的一些代码,函数需要调用才可以执行

    2、python中函数定义:
    def hhh(): #关键字def,后面是函数名,函数名不能重复
    print('这是一个函数') #函数体

    3、定义函数的形式
    ##无参函数:
    def calc():
    print('calc')
    calc()
    ##有参函数:
    def calc(x,y):
    print(x,y)
    calc(1,2)
    ##空函数:
    def calc():
    pass

    4、函数的参数
    #函数在调用时候,可以传入的参数有形参和实参
    #形参:变量名;调用时分配内存单元,调用结束,即释放,只在函数内有效,函数接收的参数
    #实参:传入的值,可以是常量、变量、表达式、函数等。调用函数时,将实参值传递给形参,调用结束后失效
    def calc(a,b):#形参,形式参数
    print(a,b)
    return a+b #返回值
    result = calc(1,2) #调用上面定义的函数,1,2是实参,实际参数

    5、函数参数的类型
    #位置参数:左到右的顺序依次定义,上面的calc函数,a,b就是位置参数,位置参数必须被传值,有几个必须传入几个值,多一少一都不行,报错
    #关键字参数:按照key=value为形参传值,可以打乱顺序,关键字参数必须放在位置参数后面,不能对一个形参多次重复赋值
    result2 = calc(a=1,b=2) #调用上面定义的函数,关键字传参
    #默认参数:定义形参阶段,就已为该形参赋值,调用时不用在传值,默认参数不是必填的,默认参数必须放在位置形参的后面
    def conn_mysql(user,passwd,port=3306):#定义一个连接mysql的方法,port就是一个默认值参数
    print(user,passwd,port)
    conn_mysql('root','123456')#没指定默认值
    conn_mysql('root','123456',port=3307)#指定默认值参数的值
    #可变参数:*来接收,传入的实参值个数不固定,想传多少就传多少,如果位置参数、默认值参数、可变参数一起使用的的话,可变参数必须在位置参数和默认值参数后面。可变参数也是非必传的。
    def more_arg(name, age, sex='nan', *agrs): # 位置参数、默认值参数、可变参数,可变参数会把后面多传的参数保存成元组的形式,然后赋值给*后的变量名agrs
    # 当然args名字是随便写的,不过一般我们都写args
    print(name, age, agrs)
    more_arg('cathy', 18, 'nv', 'python', 'China') # 调用
    #关键字参数:**来接收,后面的参数也是不固定的,关键字参数必须在最后面,非必传
    def kw_arg(name,**kwargs):#位置参数、关键字参数,调用的时候会把传入的关键字参数放到kwargs这个字典中,kwargs={'sex':'女','age':18}
    print(name,kwargs)
    kw_arg('cathy',sex='女',age=18)#调用,sex和age就是关键字调用

    6、函数返回
    #每个函数都有返回值,如果没有返回值,默认返回None,返回值用return a 或retrun a,b,c,d表示。可以返回一个值或多个值,返回多个值时会把返回值放到一个元组中,
    #函数遇到return即结束。
    def calc(a,b):#定义有返回的函数
    print(a,b)
    return a+b #返回值
    res = calc(1,2) #把函数返回的结果赋值给res

    7、全局变量和局部变量
    #函数内调用,为局部变量,出了变量作作用域即失效。
    #全局变量,整个程序都可以使用,如果修改全局变量的话需要加global关键声明,如果是list,dict,set不用加,直接修改

    8、高阶函数
    #函数接收另一个函数作为参数
    def f(a,b):
    return a+b
    def avg(x,y,z):
    avg=(x+y+z)/3
    return avg
    print(avg(f(1,2),3,4))

    9、匿名函数
    f = lambda a,b,c:a+b+c
    print(f(1,2,3))
    #f = lambda a,b,c:a+b+c 中的关键字lambda表示匿名函数,
    # 冒号:之前的a,b,c表示它们是这个函数的参数。
    # 匿名函数不需要return来返回值,表达式本身结果就是返回值。
    (lambda x,y: x if x> y else y)(101,102) -->102

    10、内置函数
    reduce(function,sequence,starting_value) 迭代
    说明:
    对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用。
    function接收的参数个数只能为2,首先把sequence中前两个元素传给函数参数,函数加工后,然后把得到的结果和第三个元素作为两个参数传给函数参数,以此类推
    返回一个结果
    入参是为函数和列表/元组/字符串和初始值,返回值为数值
    实例:
    def add(x,y):
    return x+y
    from functools import reduce
    reduce(add,[1,2,3,4])
    #-->10,相当于1 + 2 + 3 + 4 = 10
    print(reduce(lambda x,y : x*10 + y,[1,2,3,4,5])) #12345

    filter(function,sequence)过滤序列
    说明:
    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,
    最后将返回 True 的元素组成一个List/String/Tuple(取决于sequence的类型)。
    入参为函数和列表/元组/字符串,返回值为item列表/元组/字符串
    实例:
    def is_odd(n):
    return n % 2 == 1
    newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    print(newlist) #[1,3,5,7,9]
    print (filter(lambda x:x*x-4,range(10))) #(入参是列表字符元组)[0, 1, 3, 4, 5, 6, 7, 8, 9]

    map函数:map(function, sequence)
    说明:
    需要两个参数,一个是函数名,一个是序列,把序列中的每一个元素作为参数,传给函数处理
    将执行结果function(item)组成一个List返回
    入参是为函数和列表/元组/字符串,返回值为function(item)列表
    实例:
    def f(x):
    return x**2
    ret = list(map(f,(1,2,3,4))) #[1, 4, 9, 16]
    print (ret)
    print (map(lambda x,y:x*y-4,range(3),[8,9,10])) #[-4, 5, 16],入参为列表,有多少个列表,就应该有多少个入参

    练习
    -0.23
    1、判断是否只有一个小数点
    2、小数点左边的是一个整数,小数点右边的也是一个整数
    3.小数点右边的也是一个整数,左边要以负号开头,只有一个负号,负号后面是整数
    def num_float(num):
    num = str(num)
    if num.count('.') == 1:
    left,right = num.split('.')  #相当于left=num.split('.')[0] righ=num.split('.')[1]
    if left.isdigit() and right.isdigit():
    return True
    elif left.startswith('-') and left[1:].isdigit() and right.isdigit():
    return True
    return False
    print(num_float('-0.23'))
  • 相关阅读:
    算法训练——整数平均值
    算法训练——字符删除
    算法训练——最大的算式
    flask_sqlalchemy查询时将date类型修改为datetime类型
    mysql更改时区
    python 省略号 三个点...的含义
    ubuntu系统安装gedit
    python操作hdfs总结
    流式上传下载
    python将文件夹打包
  • 原文地址:https://www.cnblogs.com/qx21007874/p/10725240.html
Copyright © 2020-2023  润新知