zoukankan      html  css  js  c++  java
  • 初识函数、函数的参数、函数的参数传值、函数的调用形式、函数的返回值

    初识函数

    内置函数
    自定义函数
      
    定义无参函数           #只打印执行语句的时候
    def foo():
    print('from the foo')
    # print(foo.__doc__) #查看函数的文档注释

    定义有参函数 #依赖外部传来的值的时候
    def bar(x,y):
    print(x)
    print(y)

    定义空函数 #程序开发阶段经常使用,写程序框架的时候
    def auth():
    pass

    函数的参数

    函数的参数介绍
    形参和实参的概念

    def foo(x,y): #在函数定义阶段,括号内定义的参数-》形式参数----》本质就是变量名
    print(x) #形式参数可以定义参数的类型(x:int,y:int)
    print(y)

    foo(1,2) #在函数调用阶段,括号内定义的参数-》实际参数-->实参必须要有一个明确的值,可被当成变量值 

    函数的参数传值

    def foo(x,y):
    print(x)
    print(y)

    在实参的角度
    第一种:按照位置传值
    foo(1,2)
    第二种:按照关键字传值
    foo(x=1,y=2)
    第三种:混着用
    foo(1,y=2)
    问题一:按位置传值必须在按关键字传值的前面
    foo(y=2,1) #报错
    问题一:对于一个形参只能赋值一次

    从形参的角度来分析
    位置参数:必须传值的参数
    def foo(x,y):
    print(x)
    print(y)

    foo(1,2)
    默认参数
    def foo(x,y=1):
    print(x)
    print(y)

    foo(1)

    默认参数注意:
    一、
    def register(sex='male',name): 
    #报错,默认参数必须注意的问题是:默认参数必须放到位置参数的后面

    print(name)
    print(sex)
    register('qinzhen')
    二、
    x='male'
    def register(sex=x): #register(sex='male')
        print(sex)      #sex="male"
    x=None
    register()
    #结果为male

    再举一列
    不推荐下述方式
    x=[]
    def register(name,name_list=x): #
        name_list.append(name)
    #------------------------------------------------
    register('ASB')
    register('YSB')
    register('WSB')
    print(x)
    
    #结果为['ASB', 'YSB', 'WSB']

    *args

    *args位置参数传值后剩下的装入元组
    def foo(x,*args): #args=(2, 3, 4, 5, 6, 6, 'a', 'b')
    print(x)
    print(args)
    foo(1,2,3,4,5,6,6,'a','b')
    #结果为

    1
    (2, 3, 4, 5, 6, 6, 'a', 'b')

    *args与位置参数和默认参数混用:*args要放到位置参数后面
    def foo(x,*args,y=1):
    print(x)
    print(y)
    print(args)

    foo(1,2,3,4,5,6,7,8,9,10,y=10000000)
    结果为:

    1
    10000000
    (2, 3, 4, 5, 6, 7, 8, 9, 10)

    从形参的角度
    def foo(*args):  #foo(1,2,3)
        print(args)
    
    foo(1,2,3)
    
    从实参的角度
    def bar(x,y,z):
        print(x)
        print(y)
        print(z)
    bar(*(1,2,3)) #bar(1,2,3)

    **kwargs

    按关键字传值剩下的装入字典

    def foo(x,**kwargs):
    print(x)
    print(kwargs)

    foo(1,y=1,z=2)
    结果为:
    1
    {'y': 1, 'z': 2}
    *args,**kwargs混着用的位置问题
    def foo(x,*args,**kwargs):
    print(x)
    print(args)
    print(kwargs)

    foo(1,y=1,z=2)
    结果 1 () {"z":2,"y":1}
    从形参的角度
    def foo(**kwargs): #x=1,y=2,z=3
        print(kwargs)
    
    foo(x=1,y=2,z=3)
    
    从实参的角度
    def foo(x,y,z=1):
        print(x)
        print(y)
        print(z)
    
    foo(**{'x':1,'y':2,'z':3})  #foo(x=1,y=2,z=3)
    foo(**{'x':1,'y':2})  #foo(x=1,y=2)
    foo(**{'a':1,'y':2})  #foo(a=1,y=2)   #报错,没有a参数
    
    

    函数的调用形式

    def foo():#无参函数一般执行语句
    print('from the foo')


    def bar(x,y):#有参函数一般要求有返回值
    res=x+y
    return res

    函数的调用
    foo() #函数调用的语句形式
    res=bar(1,2) #函数调用的表达式形式
    res1=bar(1,2)*10 #函数调用的表达式形式
    res2=bar(bar(1,2),3) #函数的调用作为另外一个函数的参数
    print(res)
    print(res1)
    print(res2)

    函数的返回值

    函数的返回值可以是任意类型
    没有return--->None
    return 1--->1
    return 1,2,3--->(1,2,3)
    def test():
        return 1  #只会返回第一个return值
        print('--------------')
        print('--------------')
        return 2
        return 3
    
    res=test()
    print(res)
    
    #结果为 1
  • 相关阅读:
    遇到缺陷错误时,有耐心,冷静思考,保证大方向是正确的
    学习新芯片和做新的工作内容时 DEMO
    599密码
    shop--7.店铺编辑和列表--店铺管理 前端
    shop--7.店铺编辑和列表--店铺列表展示 前端
    shop--7.店铺编辑和列表--店铺列表 分页查询,模糊查询--service层,controller层实现
    shop--7.店铺编辑和列表--店铺列表 分页查询,模糊查询--dao层实现
    shop--7.店铺编辑和列表--更新店铺的信息 前端实现 js
    shop--7.店铺编辑和列表--更新店铺的信息,包括对店铺照片的处理,根据shopId获取shop信息
    shop--7.店铺编辑和列表--联合查询的结果集封装ResultMap association collection
  • 原文地址:https://www.cnblogs.com/domestique/p/6752315.html
Copyright © 2011-2022 走看看