Python学习

1、函数初识

  函数定义了之后,可以在任何需要它的地方调用

#   函数基本格式
def mylen():
    s1 = 'Hello SharkJiao'
    length = 0
    for i in s1:
        length += 1
    return length
print('str_len:%s'%(mylen()))

2、函数的返回值

  1)没有返回值——返回None

    不写return

    只写return:结束一个函数的继续

    return None —— 不常用

def mylen():
    s1 = 'Hello SharkJiao'
    length = 0
    for i in s1:
        length += 1
    print(length)
print('str_len:%s'%(mylen()))
#   因为没有返回值,此时的mylen()为None
def ret_demo():
    print(1)
    return
    print(2)
print(ret_demo())
#   只写return,后面不写其他内容,也会返回None
#  函数一旦运行到return,结束整个函数
def ret_demo():
    print(1)
    return None
    print(2)
print(ret_demo())
#   return None:和上面的两种情况一样,我们一般不这样写。

  2)返回1个值

    可以返回任何数据类型

    只要返回就可以接收到

    如果在一个程序中有多个return,那么只执行第一个

  3)返回多个值

    用多个变量接收,有多少返回值就用多少变量接收

    用一个变量接收,得到的是一个元祖

#   可以返回任意多个、任意数据类型的值
def demo1():
    return 1,2,3,4
#   返回多个值
def demo2():
    return 1,['a','b'],3,4
#   返回多个任意类型的值
ret1 = demo1()
print(ret1)
ret2 = demo2()
print(ret2)
def demo2():
    return 1,['a','b'],3,4
ret2 = demo2()
print(ret2)
#   返回多个值,用一个变量接收
a,b,c,d = demo2()
print(a,b,c,d)
#   返回多个值,用多个变量接收
#   用多个值接收返回值:返回几个值,就用几个变量接收

3、实参

  1)按照位置传值

def mymax(x,y):
    #此时x=10,y=20
    the_max = x if x > y else y
    return the_max

ma = mymax(10,20)
print(ma)

  2)按照关键字传值

    可以混用 位置参数必须在关键字传参之前

    不能对一个参数重复赋值

def mymax(x,y):
    #此时x = 20,y = 10
    print(x,y)
    the_max = x if x > y else y
    return the_max

ma = mymax(y = 10,x = 20)
print(ma)

  3)位置、关键字形式混着用

def mymax(x,y):
    #此时x = 10,y = 20
    print(x,y)
    the_max = x if x > y else y
    return the_max

ma = mymax(10,y = 20)
print(ma)

  注意: 位置参数必须在关键字参数的前面

      对于一个形参只能赋值一次

4、形参

  1)位置参数必须传值

def mymax(x,y):
    #此时x = 10,y = 20
    print(x,y)
    the_max = x if x > y else y
    return the_max

#调用mymax不传递参数
ma = mymax()
print(ma)

#   TypeError: mymax() missing 2 required positional arguments: 'x' and 'y'

  2)默认参数

    将变化比较小的值设置成默认参数

def stu_info(name,sex = "male"):
    """打印学生信息函数,由于班中大部分学生都是男生,
        所以设置默认参数sex的默认值为'male'
    """
    print(name,sex)

stu_info('alex')
stu_info('eva','female')

  3)参数陷阱

    默认参数是一个可变数据类型,那么每一次调用函数的时候,如果不传值就公用这个数据类型的资源

def defult_param(a,l = []):
    l.append(a)
    print(l)

defult_param('alex')
defult_param('egon')

  4)动态参数

    按位置传值多余的参数都由args或者kwargs统一接收,保存成一个元组的形式

    *args:可以接收任意多个位置参数

def mysum(*args):
    the_sum = 0
    for i in args:
        the_sum+=i
    return the_sum

the_sum = mysum(1,2,3,4)
print(the_sum)

    **kwargs :可以接收多个关键字参数

def stu_info(**kwargs):
    print(kwargs)
    print(kwargs['name'],kwargs['sex'])

stu_info(name = 'alex',sex = 'male')

  5)函数的参数的顺序

    位置参数:必须传

    *args:可以接收任意多个位置参数

    默认参数:可以不传

    *kwrags:可以接收多个关键字参数

5、相关练习

原文地址:https://www.cnblogs.com/SharkJiao/p/9366893.html