Python笔记 Day6

一,初始函数

  1,什么是函数:函数就是 对代码块和功能的封装和定义.(就是对一种功能的封装)

  函数的定义, 函数名, 函数体以及函数的调⽤

def 函数名():         # 在定义的时需要的参数,类似于占位符
    函数体

#调用
函数名()        # 在调用时需要传入的参数是实参

#这里的函数名的命名规则和使⽤和变量量基本一样.⾃⼰己回顾⼀下变量的命名规则. 函数体: 就是函数被执行之后要执行的代码

  2,return的用法和作用:

    2.1,函数中遇到return,此函数结束,不再继续执行

def yue():    
    print("会家")    
    print("吃饭")    
    print("约小姐姐")    
    return    
    print("约起看电影")    # 这句话不会被执⾏ 

yue()    # 这里的执行结果没有'约谁啊'

    2.2, 给函数的调用者一个访问结果

def yue():    
print("回家")    
print("早点回家")    
print("约小姐姐")    
return "等我"  #直接给函数一个返回值

a = yue() 
print(a)    # 等我

def fun():
    print('没有')
     # return 5

print(fun())           # 没有  None   当没有return时,函数的值永远时None
print(fun)             #只要定义了一个函数都会生成一个地址,就像门牌号 <function fun at 0x00000158B8FD2E18>

   2.3,函数的返回值可以有多个结果,且返回的结果是一个元组,我们可以通过解构的方式获取,如 return 4,5    ,可以通过 a,b = 函数名()

def yue():    
    print("回家")    
    print("七夕了")    
    print("约小姐姐")    
    return "去游泳", "去吃火锅"

girl = yue()     # (去游泳 ,去吃火锅)
print(type(girl))   # tuple   

   总结:  如果return什么都不写 或者 ⼲脆不写return .那么返回的就是None           

      如果return后⾯写了⼀个值. 则调⽤用者可以接收一个结果           

      如果return后⾯写了多个结果, 则调⽤用者可以接收一个tuple, 调用者可以直接解构成 多个变量量

二, 函数的参数:

  1,参数, 函数在调⽤的时候指定具体的⼀个变量的值. 就是参数.  语法:

def 函数名(参数列列表):    
    函数

def my_len(l):  # l 形式参数 形参
     print(l)
     count = 0
     for j in l:
         count += 1
     return count

a = 'fdsafdsafdsagfsadf'
print(my_len(a))  # 实际参数 ,实参
print(my_len([1,2,3]))

  2,1. :        1,形参:  写在函数声明的位置的变量叫形参.  形式上的一个完整. 表示这个函数需要xxx

        2. 实参: 在函数调用的时候给函数传递的值. 叫实参, 实际执行的时候给函数传递的信息. 表⽰给函数 xxx

        3. 传参: 给函数传递信息的时候将实际参数交给形式参数的过程被称为传参. 

  3.1:    按照实参的角度,可以把参数分为: 位置参数, 混合参数,关键字参数   分别如下:

#1,位置传参  (位置必须按照顺序一一对应)
 def func(a,b,c):
     print(a)
     print(b)
     print(c)
# 位置参数必须给它传值否则会报错!!!
func('fdsafdas',3,4)

# 有点⼉儿麻烦, 我们在这里学⼀个三元运算符. 
def my_max(a, b):    
c = a if a > b else b   # 当a>b成立返回a, 否则返回b    
return c

my_max(5,21)


#2,关键字参数  (可以没有顺序,但是必须是全部关键字加上一个值)
def max_min(a,b):
    return a if a > b else b
print(max_min(b = 300,a = 200))


3.混合传参,就是包含关键字和位置参数的混合   (但是必须把关键字参数放在最后)
def func1(a,b,c,d,e):
     print(a)
     print(b)
     print(c)
     print(d)
     print(e)
func1(1,2,d=4,c=3,e=5)
func1(1,4,d=2,c=3,e=5)

  4,按照形式参数分类: 位置参数 , 默认参数

#位置参数
def func(a,b,c):
     print(a)
     print(b)
     print(c)
func('fdsafdas',3,4)


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


stu_info('alex')  # 默认是男的
stu_info('eva','female')


注意,默认参数这里有一个坑,默认参数是个可变类型时:
ef defult_param(a,l = []):
    l.append(a)
    print(l)

defult_param('alex')
defult_param('egon')    #结果['alex']    ['alex', 'egon']

  5,动态参数:  按位置传值多余的参数都由args统一接收,保存成一个元组的形式

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接收的只是键值对的参数,并保存在字典中。

在函数里我们把args和kwargs分别进行调用就可以得到想要的值了

猜你喜欢

转载自www.cnblogs.com/double-W/p/9446499.html
今日推荐