初识函数 函数参数 三元运算

1.函数的定义与调用

定义后的函数不调用是不执行的

函数的调用:
函数名+() == 函数的调用

2.函数的执行过程:

定义 -- 调用 -- 函数体的代码
def make():      #第一步
    print(1)        #第三步
    print(2)        #第四步
    print(3)        #第五步
    print(make)  #第六步

make()             #第二步
函数的执行过程

返回值的

3.函数的返回值

没有返回值:
1 def func():
2     return
3 ret = func()
4 print(ret)  #None

返回值写了return ,没有写内容返回的就是None

没有写return ,返回的也是None
return下面的代码都不执行,并且还结束了这个函数
返回值返回给调用者。

一个返回值:
1 def func():
2     return 6
3 ret = func()
4 print(ret,type(ret))  #6 <class 'int'>
返回多个值:
1 def func():
2     return 6,6
3 ret = func()
4 print(ret,type(ret))  #(6, 6) <class 'tuple'>
5 不加括号一个值就是数据结构本身,多个值就是元组;

4.函数的参数

形参:在函数声明的位置的变量

实参:函数在调用时传递给形参的值

行参:将实参传递给形参的过程

位置参数:

位置参数:
    def make(char,addr,sex)
       make('探探','北京','萝莉')
位置参数

 

def func(a,b,c,d=1):  # 形参 (位置+默认)混合形参
    print(a,b,c,d)

func(1,2,3) # 位置参数



def func(a,b,c,d=1):  # 形参 (位置+默认)混合形参
    print(a,b,c,d)

func(1,2,3,d=3) # 实参 (位置+关键字)混合实参


def func(a,b,c,d):  # 形参 (位置+默认)混合形参
    print(a,d)

func(2,d=1) # 实参 (位置+关键字)混合实参
位置参数 > 关键字参数
View Code

 

实参角度传参:

① 按照位置传值:位置参数

1 def make(x,y):
2     print(x,y)
3 make(5,6)

 

②按照关键字传值:关键字参数

1 def make(x,y):
2     print(x,y)
3 make(y= 5 , x = 2)

 

③按照位置和关键字混合用:混合传参

def make(a,b):
    print(a,b)
make(1,b= 2)
# 位置参数----->关键字参数
# 位置参数必须在关键字参数前

 

形参角度传参:

①默认参数

1 def make(name,sex = 'man'):
2     print(name,sex)
3 make('tom')
4 
5 
6 def make(name,sex = 'man'):
7     print(name,sex)
8 make('tom','women')


# 默认参数是个可变类型
def defult_param(a,l = []):
    l.append(a)
    print(l)

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

函数的参数有:形参、实参、行参、位置参数、关键词参数、默认参数,今天我们来讲讲动态参数!

 

 

动态位置参数(*args)

 

1 def func(a,b,c,*args):  # 在形参位置*叫做聚合
2     print(a,b,c)
3     print(args)   # 元组形式
4 func(1,2,3,4,5,9,6,7,8)

 

 

形参接收顺序: 位置参数---->动态位置参数---->默认参数----->动态默认参数

  View Code

 

 动态默认参数**kwargs)

 

关键字的形式传参

 

 

 

那么我们只输入关键字参数,下图会输出什么呢?

 

 最后只输出了(){‘a’:4,‘b’:5}

 

View Code

输出:

 () {'a': 4, 'b': 5}
(1, 2, 3) {}

View Code

输出:(1, 2, 3) {'a': 4, 'b': 5},args和kwargs都只接受对应自己的实参。

 

 总结:

1.args和 kwargs 是可以更换的,但是程序员约定都用它
  用途:在不明确接受参数,数量时使用*args和**kwargs
2.动态位置参数 > 动态关键字参数
  形参(接收顺序): 位置 > 动态位置 > 默认参数 > 动态默认参数
  实参(接收顺序): 位置 > 关键字参数
3.在实参调用的时候 *将可迭代的对象打散,字典是将键取出
在形参处出现*就是在聚合
4.在实参调用的时候 **将字典打散成 关键字参数(键=值)
在形参处出现**就是将关键字参数聚合成一个字典




 


 

1 dic = {'a':1,'b':8}
2 def func(*args,**kwargs):      # 聚合 
3     print(args,*kwargs)        # print('a','b')  字典的键
4     print(args,kwargs)         # print('a','b')  字典
5 func(**dic)                    #   打散

 

小补充

三元运算:

def func(a,b):
    if a>b:
        return a
    else:
        return b
print(func(9,8))

 

条件成立的结果       条件          条件不成立的结果 c = a if a>b else b

1 def func(a,b):
2     return a if a>b else b
3 print(func(10,9))

 

posted @ 2019-03-13 15:09  吃汤圆啦i  阅读(407)  评论(0编辑  收藏  举报