码迷,mamicode.com
首页 > 其他好文 > 详细

Function

时间:2018-09-06 23:57:28      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:元组   return   def   ons   调用   字典   str   无限   数据类型   

函数初识:
s = ‘12345‘
def my_len():
    i = 0
    for k in s:
        i += 1
    print(i)
my_len()
my_len() #重复调用
问题:
    1.只能打印s的长度
    2.通过i = my_len() 返回none,发现函数没有返回长度,只是单纯的打印
解决:增加返回值
s = ‘12345‘
def my_len():
    i = 0
    for k in s:
        i += 1
    return i   #给苹果
my_len()
length = my_len()   #要苹果
print(length)
返回值的三种情况:
    1.没有返回值
        -不写return 程序会在最后默认return None
        -只写return,程序遇到return就不会运行后面的程序了。结束一个函数的继续。
        -写return None和只写return功能一样
    2.返回一个值
        -可以返回任何数据类型
        -只要返回了就可以接受到
        -如果在一个程序中有多个return,那么只执行一个
    3.返回多个值
        -有多少个返回值用多少个变量接收,不能多也不能少。return 1,2,3   a,b,c = fun()
        -用一个变量接收多个返回值,会返回一个元组 
元组、list、dict是可以解包的:
    1.a,b,c = (1,2,3)
    2.a,b,c = [1,2,3]
    3.a,b,c = {1:1,2:2,3:3}
参数:
    1.ret = my_len(s) #传递参数;传参;实际参数;实参
    2.def my_len(s): #形式参数,形参;接收参数
    3.两个函数可以互相调用
def f1(i):
    for k in i:
        print(k)
def f2(i):
    f1(i)
    for y in i:
        print(k)
f2([1,2,3,4]) #函数的嵌套调用
参数:
    1.一个参数
    2.两个参数 def my_len(a,b)
站在参数的角度上:
    1.按照位置传参
    2.按照关键字传参
    3.混着用可以:但是必须先按照位置传参,再按照关键字传参
    4.不能给同一个变量传多个值
站在形参的角度上:
    1.位置参数:必须传,而且有几个参数就传几个值
    2.默认参数:可以不传,如果不传就是默认的参数,如果传了就用传了
    3.动态参数:args是习惯,可以无限多的增加参数,但是*args不能收到关键字传递的参数,*args必须再*kwargs之前
    4.顺序:-位置参数,-*args,-默认参数, -**kwargs
动态参数1:可以接收任意多个参数
def sum(*args): #args只是一个变量名,*不可变
    print(args) #元组用for循环调用
sum(1,2)
sum(1,2,3)
sum(1,2,,3,4) #接收的是按照位置传参的值,组织成一个元组
动态参数2:可以传入无限多个关键词参数
def func(**kwargs):
    print(kwargs) 
fun(a=1,b=2,c=3)
fun(a=1,b=2)
fun(a=1) #接收的是按照关键字传参的值,组织成一个字典
两个动态参数结合,可以接收所有的值
def func(*args,**kwargs): 
    print(args,kwargs)
func(1,2,3,a=1,b=3) #先传位置参数,再传关键字参数
def func(a,b,*args,sex=‘man‘,**kwargs):
    print(a,b,args,sex=‘man‘,kwargs)
func(1,3,4,sex=‘man‘,a=1,b=2)
def func(*args): #站在形参的角度上,给变量加上*,就是组合所有传来的值
    print(args)
a = [1,2,3,4,5]
func(*a)
#效果等于func(1,2,3,4,5)
#站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散
def func(**kwargs):
    print(kwargs)
d = {‘a‘:1,‘b‘:2}
func(**d)
效果等于func(a=1,b=2)
函数的注释:
def func():
    ‘‘‘
    这个函数实现了什么功能    
    参数1:
    参数2:
    return:是字符串或者是列表的长度
    ‘‘‘
    pass
函数的陷阱:
    如果默认参数的值是一个可变数据类型,那么每一次调用函数的时候,如果不传值就公用这个数据类型的资源。
def qqxing(i=[]):
    i.append(i)
qqxing()
qqxing([1])
qqxing()
 
def qqxing(k,a={}):
    a[k] = ‘v‘
    print(a)
qqxing(1)
qqxing(2)
qqxing(3)
 
 
 
 
 
 
 

Function

标签:元组   return   def   ons   调用   字典   str   无限   数据类型   

原文地址:https://www.cnblogs.com/changwoo/p/9601873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!