python成长之路六-函数的初识

定义函数

  我们现学已知的python函数有<内置函数>

  而我们现在要学的是<自定义函数>

1,def  定义一个函数

def name(): # 后接函数名 冒号
    pass

 

2,调用函数

def name():
    print("代码...")
name() # 函数名加括号  ###一定要加括号,不加括号调用的是函数名的内存地址

 

3,return 返回值

  1,不写return的情况下,会默认返回一个None

def name():
    print("代码...") # 打印
print(name())
运行结果: # 打印调用函数
代码...
None

 

  2,函数后面只写return,一样返回None,return下面的代码不执行

def ret_demo():
    print(111)
    return # 遇到return 结束整个函数
    print(222)
ret_demo()
运行结果:
111

 

  3,return 后接一个值 (返回值的数据类型参数原本的数据类型)

def demo():
    a = 1
    b = 2
    c = a + b
    return c 
print(demo())
运行结果:
3

 

  4,return 后接多个值,可以是任意数据类型(返回的多个值会被组织成元组被返回,也可以用多个值来接收)

def my_len():
    a = "jadshhsah"
    content = 0
    for i in a:
        content+=1
    return content ,"哈哈哈",123
print(my_len())
运行结果:
(9, '哈哈哈', 123)

def ret_demo2():
    return 1,["a","b"],3,4
a,b,c,d = ret_demo2() # 多个值接收
print(a,b,c,d)
运行结果:
1 ['a', 'b'] 3 4

 

4,函数传参  

  传参分为形参和实参

def  mymax(x,y): # x,y为形参
    if x > y: # 比较大小,输出比较大的
        return x
    else:
        return y
print(mymax(110, 119)) # 110,119为两个实参

    1,位置参数

      形参实参位置要一一对应,就如上面的x,y和110,119

    2,关键字参数

      可以不用对应

def mymax(x,y):
    print(x,y)
    max = x if x > y else y
    return max
ma = mymax(y = 20, x = 10)
print(ma)

    3,混合参数

      位置参数一定要在关键字参数前面

def mymax(x,y):
    print(x,y)
    max = x if x > y else y
    return max
ma = mymax(10, y = 20)
print(ma)

    4,默认参数

      将不常变化的值设置成默认值,

      传参时,不输入则显示默认,输入则替换默认值

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

stu_info("alex")
stu_info("xiaomei","female")

      默认参数之面试坑:

      如果默认参数是个可变的数据类型

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

运行结果:

['alex']
['alex', 'egon']

    5,动态参数

      动态参数,也叫不定长传参,就是你需要传给函数的参数很多,不定个数,那这种情况下,你就用*args,**kwargs接收,args是元祖形式,

        接收除去键值对以外的所有参数,kwargs接收的只是键值对的参数,并保存在字典中。

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")

       

      * 的魔性用法
      在函数的定义时,在 *位置参数,**位置参数聚合。
      在函数的调用(执行)时,在 *位置参数,**位置参数打散
# l1 = [1,2,3]
# l2 = [111,22,33,'alex']

# def func1(*args):
#     print(args)
#     return args[0] + args[1]
# print(func1(l1,l2))

# def func1(*args,**kwargs):
#     # print(args)
#     print(kwargs)
# func1(*l1,*l2)
# func1(*(1,2,3),*('alex','sb'))
# func1(*'alex',*'sb')
# func1(1,2,3,'alex','sb')
#
# func1(**{'name':'alex'},**{'age':1000})  # func1(name='alex',age=1000})

 

 

5,三元运算

   常用于简单的if 语句判断

  max = x if x > y else y 

li = [1,2,3,5,4,6,7,8]
l1 = [i for i in li if i >5] # 找出大于5的数
运行结果:
[6, 7, 8]

def max_num(a,b):
""" 输入两个数比大小"""
    max = a if a > b else b 
    return max
print(max(4,8))

 

    

 

posted @ 2018-08-15 15:49  温而新  阅读(201)  评论(0编辑  收藏  举报