Python基础八初识函数

一、昨日内容回顾
    文件操作
        流程
            1打开文件创建文件句柄
            2对文件句柄进行操作
            3关闭文件句柄
        读
            r r+ rb r+b
        写
            w w+ wb w+b
        追加
            a a+ ab a+b
        其他骚操作:
            readable() writable() seek() tell() flush() truncate()
        文件的修改:略
二、函数
    函数的初识
        函数是个什么玩意儿?
            一个函数封装一个功能,其实就是给代码“打包”。 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
        def func_name():
            一堆代码
                一堆代码
                    一堆代码
            return 返回值,默认是None
        func_name()   # 是调用这个函数执行他内部的代码
        
 
  关于return
            return的功能:
                1返回一个值给调用者(func_name())单个返回值返回单个值,多个返回值返回一个tuple(元组)
                2结束函数
       

   return关键字的作用

    return 是一个关键字,这个词翻译过来就是“返回”,所以我们管写在return后面的值叫“返回值”。

    要研究返回值,我们还要知道返回值有几种情况:分别是没有返回值、返回一个值、返回多个值

      没有返回值

        不写return的情况下,会默认返回一个None:我们写的第一个函数,就没有写return,这就是没有返回值的一种情况。

        

#函数定义
def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    print(length)

#函数调用
str_len = mylen()
#因为没有返回值,此时的str_len为None
print('str_len : %s'%str_len)

没有return

        只写return,后面不写其他内容,也会返回None,有的同学会奇怪,既然没有要返回的值,完全可以不写return,为什么还要写个return呢?这里我们要说一下return的其他用法,就是一旦遇到return,结束整个函数

def ret_demo():
    print(111)
    return
    print(222)

ret = ret_demo()
print(ret)

只写return

        return None:和上面情况一样,我们一般不这么写。

      返回一个值

            刚刚我们已经写过一个返回一个值的情况,只需在return后面写上要返回的内容即可。  

#函数定义
def mylen():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    return length

#函数调用
str_len = mylen()
print('str_len : %s'%str_len)

return返回一个值

      返回多个值

        可以返回任意多个、任意数据类型的值

def ret_demo1():
    '''返回多个值''' 
    return 1,2,3,4


def ret_demo2():
    '''返回多个任意类型的值'''
    return 1,['a','b'],3,4

ret1 = ret_demo1()
print(ret1)
ret2 = ret_demo2()
print(ret2)

返回多个值

return返回多个值

        返回的多个值会被组织成元组被返回,也可以用多个值来接收

 
def ret_demo2():
    return 1,['a','b'],3,4

#返回多个值,用一个变量接收
ret2 = ret_demo2()
print(ret2)

#返回多个值,用多个变量接收
a,b,c,d = ret_demo2()
print(a,b,c,d)

#用多个值接收返回值:返回几个值,就用几个变量接收
a,b,c,d = ret_demo2()
print(a,b,c,d)

多个返回值的接收

多个值接收
 
  关于参数
            
实际参数传参 位置参数
def max_num(x,y): 

    return  x if x > y else y

ma = max_num(10,20)
print(ma)
关键字参数
def max_num(x,y): 

    return  x if x > y else y

ma = max_num(x=10,y=20)
print(ma)
混合传参
def max_num(x,y): 

    return  x if x > y else y

ma = max_num(10,y=20)
print(ma)
形参角度传参 位置参数
def max_num(x,y): # 形参x,y与实参一一对应

    return  x if x > y else y

ma = max_num(10,20)
print(ma)
默认参数  
def stu_info(name,sex = "male"):  # 默认sex='male'可修改
    print(name,sex)


stu_info('Andy')
stu_info('Tom','girl')
动态参数  

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")
 
动态参数,也叫不定长传参,就是你需要传给函数的参数很多,不定个数,那这种情况下,
你就用*args,**kwargs接收,args是元祖形式,接收除去键值对以外的所有参数,
kwargs接收的只是键值对的参数,
并保存在字典中。
原文地址:https://www.cnblogs.com/gzying-01/p/10190493.html