ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day22 1.函数的基本使用 2.函数的参数 3.内置函数

2021-06-30 20:04:19  阅读:172  来源: 互联网

标签:内置 函数 形参 day22 print 实参 foo def


day22

1.函数的基本使用

1.函数的使用原则:先定义,后调用
2.定义函数的三种格式:
def foo(): #无参函数
print('hello')

def foo(x,y):   #有参函数
    res = x + y

def spam():   #空函数
    pass

3.函数的返回值
def foo():
return 123
4.调用函数的三种格式
def foo():
return 123
foo() #直接调用
res = f00() * 10
print(res) #表达式的形式
print(foo()) #函数中调用其他函数


# 2.函数的参数

形参:函数定义阶段,括号内指定的参数(变量名)
实参:函数调用阶段,括号内传入的值(变量值)
关系:在函数调用时,会将实参值绑定给形参名,函数调用完毕后则解除绑定

#一 位置形参:
在函数定义阶段,按照从左到右的顺序依次定义的形参,称之为位置形参
特点:必须被传值
#二 位置实参:
在函数调用阶段,按照左到右的顺序依次传入的值,称之为位置实参
特点:按照顺序依次为形参赋值
#三 关键字实参
在函数调用阶段,按照key=value的格式来传值,称之为关键字实参
特点:可以打乱顺序,但仍能为指定的形参赋值
注意:可以混用位置实参与关键字实参,但是
1 位置实参必须跟在关键字实参前面
2 不能为同一个形参重复赋值
#四 默认形参
在函数定义阶段,就已经为形参赋值,称之为默认形参
特点: 定义阶段就已经有值了,意味着在调用阶段可以不用为其传值
注意:
1 可以混用位置形参与关键字形参,但是位置形参必须跟在默认形参的前面
2 默认形参的值推荐指向不可变类型
3 默认形参的值只在函数定义阶段被赋值一次
#五 可变长参数:*与**
在形参中带*: *会将溢出的位置实参值汇总成元组,然后赋值给紧跟其后的形参名
def foo(x,*y):  
    print(x,y)
foo(1)              #1
foo(1,2,3,4,5,6)    #1 (2,3,4,5,6)

在形参中带**: **会将溢出的关键字实参值汇总成字典,然后赋值给紧跟其后的形参名
def foo(x,**y):   
    print(x,y)
foo(1,a=111,b=222,c=333)  #1 y={"a":111,"c":333,"b":222}

在实参中带*
def foo(x, y, z):
    print(x, y, z)
foo(*[11, 22, 33])  # foo(11,22,33)
foo(*"hello")       # foo("h","e","l","l","o")

在实参中带**
def foo(x, y, z):
    print(x, y, z)
foo(*{"a":1,"b":2,"c":3})        # foo("a","b","c")
foo(**{"a": 1, "b": 2, "c": 3})  # foo(c=3,a=1,b=2)
foo(**{"x": 1, "z": 3, "y": 2})  # foo(y=2,z=3,x=1)
    
def index(a, b, c):
    print(a, b, c)

def wrapper(*args,**kwargs):  # args=(1,2,3)    kwargs={"x":111,"y":222,"z":333}
    index(*args,**kwargs)     # index(*(1,2,3),**{"x":111,"y":222,"z":333})
                              # index(1,2,3,x=111,y=222,z=333)

# wrapper(1, 2, 3, x=111, y=222, z=333)  错误
wrapper(1,c=3,b=2)            #1 2 3

#命名关键字参数
def foo(x,y,*args,m=666,n):
    print(x,y)
    print(m,n)
# foo(1,2,m=777,n=888)
# foo(1,2,n=999)
def foo(x,y=111,*args,m,n,**kwargs):
    pass

标签:内置,函数,形参,day22,print,实参,foo,def
来源: https://www.cnblogs.com/SSagittarius/p/14956139.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有