• python成长之路六-函数的初识


    定义函数

      我们现学已知的python函数有<内置函数>

      而我们现在要学的是<自定义函数>

    1,def  定义一个函数

    def name(): # 后接函数名 冒号
        pass

     

    2,调用函数

    def name():
        print("代码...")
    name() # 函数名加括号  ###一定要加括号,不加括号调用的是函数名的内存地址

    3,return 返回值

      1,不写return的情况下,会默认返回一个None

    def name():
        print("代码...") # 打印
    print(name())
    运行结果: # 打印调用函数
    代码...
    None

      2,函数后面只写return,一样返回None,return下面的代码不执行

    def ret_demo():
        print(111)
        return # 遇到return 结束整个函数
        print(222)
    ret_demo()
    运行结果:
    111

      3,return 后接一个值 (返回值的数据类型参数原本的数据类型)

    def demo():
        a = 1
        b = 2
        c = a + b
        return c 
    print(demo())
    运行结果:
    3

      4,return 后接多个值,可以是任意数据类型(返回的多个值会被组织成元组被返回,也可以用多个值来接收)

    def my_len():
        a = "jadshhsah"
        content = 0
        for i in a:
            content+=1
        return content ,"哈哈哈",123
    print(my_len())
    运行结果:
    (9, '哈哈哈', 123)
    
    def ret_demo2():
        return 1,["a","b"],3,4
    a,b,c,d = ret_demo2() # 多个值接收
    print(a,b,c,d)
    运行结果:
    1 ['a', 'b'] 3 4

    4,函数传参  

      传参分为形参和实参

    def  mymax(x,y): # x,y为形参
        if x > y: # 比较大小,输出比较大的
            return x
        else:
            return y
    print(mymax(110, 119)) # 110,119为两个实参

        1,位置参数

          形参实参位置要一一对应,就如上面的x,y和110,119

        2,关键字参数

          可以不用对应

    def mymax(x,y):
        print(x,y)
        max = x if x > y else y
        return max
    ma = mymax(y = 20, x = 10)
    print(ma)

        3,混合参数

          位置参数一定要在关键字参数前面

    def mymax(x,y):
        print(x,y)
        max = x if x > y else y
        return max
    ma = mymax(10, y = 20)
    print(ma)

        4,默认参数

          将不常变化的值设置成默认值,

          传参时,不输入则显示默认,输入则替换默认值

    def stu_info(name,sex = "male"):
        '''打印学生信息,由于班里大多都是男生
        所以设置参数"sex"默认值为”male“'''
        print(name,sex)
    
    stu_info("alex")
    stu_info("xiaomei","female")

          默认参数之面试坑:

          如果默认参数是个可变的数据类型

    def defult_param(a,l = []):
        l.append(a)
        print(l)
    defult_param("alex")
    defult_param("egon")
    
    运行结果:
    
    ['alex']
    ['alex', 'egon']

        5,动态参数

          动态参数,也叫不定长传参,就是你需要传给函数的参数很多,不定个数,那这种情况下,你就用*args,**kwargs接收,args是元祖形式,

            接收除去键值对以外的所有参数,kwargs接收的只是键值对的参数,并保存在字典中。

    def trans_para(*args,**kwargs):
        print(args,type(args))
        print(kwargs,type(kwargs))
    trans_para("jinxin",12,[1,2,3,4],[3,4,],(1,4,7),{"a":"123","c":456},country="china")

           

          * 的魔性用法
          在函数的定义时,在 *位置参数,**位置参数聚合。
          在函数的调用(执行)时,在 *位置参数,**位置参数打散
    # l1 = [1,2,3]
    # l2 = [111,22,33,'alex']
    
    # def func1(*args):
    #     print(args)
    #     return args[0] + args[1]
    # print(func1(l1,l2))
    
    # def func1(*args,**kwargs):
    #     # print(args)
    #     print(kwargs)
    # func1(*l1,*l2)
    # func1(*(1,2,3),*('alex','sb'))
    # func1(*'alex',*'sb')
    # func1(1,2,3,'alex','sb')
    #
    # func1(**{'name':'alex'},**{'age':1000})  # func1(name='alex',age=1000})

    5,三元运算

       常用于简单的if 语句判断

      max = x if x > y else y 

    li = [1,2,3,5,4,6,7,8]
    l1 = [i for i in li if i >5] # 找出大于5的数
    运行结果:
    [6, 7, 8]
    
    def max_num(a,b):
    """ 输入两个数比大小"""
        max = a if a > b else b 
        return max
    print(max(4,8))

        

  • 相关阅读:
    Spring异常之版本错误
    SpringMVC格式转化错误之HTTP Status [400] – [Bad Request]
    Spring错误之org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'bookService' is expected to be of type 'pw.fengya.tx.BookService' but was actually of type 'com.sun.proxy.$Proxy1
    02_版本控制工具SVN
    Hibernate异常之命名查询节点未找到
    Hibernate异常之Integer转float(自动类型转换错误)
    Hibernate异常之cascade
    Hibernate异常之关键字错误
    DHCP保留地址批量导入导出
    H3C和CISCO交换机禁止MAC地址通信
  • 原文地址:https://www.cnblogs.com/peng104/p/9481881.html
Copyright © 2020-2023  润新知