• 定义函数:使用def+函数名
def say_hello():
    print('hello1')
    print('hello2')
    print('hello3')

say_hello()    ##使用函数名调用函数,如果不调用则不会有任何输出结果(系统自动跳过函数)

结果:
hello1
hello2
hello3
  • 函数里嵌套函数
def westos():
    print('hello')
    def python():
        print('python')
    python()       ##如果不调用则不会输出python

westos()
结果:
hello
python
  • 参数:形参和实参
#定义函数的时候的变量 叫形参(可以任意起名)
def welcome(a):
    print('hello',a)

#真实的数据信息,调用函数的时候传的参数叫实参
welcome('lily')
welcome('laoli')

结果:
hello lily
hello laoli

形参中的四大参数:

位置参数
默认参数
可变参数
关键字参数

  • 位置参数:形参和实参个数必须保持一致,最好按位置传参
def getInfo(name,age):
    print(name,age)

##传参时最好信息对应保持一致
getInfo('westos',11)
 
##第二种:用'='将实参和形参联系在一起
getInfo(age=11,name='westos')

结果:
westos 11
  • 默认参数:形参和实参可以不一致
def mypow(x,y=2):
    print(x ** y)

mypow(4)     ##第二个参数默认为2

结果:
16
def mypow(x,y=2):
    print(x ** y)

mypow(4,3)  ##如果给了参数值,则默认的就不生效了

结果:
64
  • 可变参数:
def mysum(*a):          
    """                 
    :param a:           
    :return:            
    *a:可变参数             
    a:是元组数据类型           
    """                 
    print(a)            
    sum = 0             
    for item in a:      
        sum += item     
    print(sum)          
mysum(1,2,3,4,5,6,7,8,9)

结果:
(1, 2, 3, 4, 5, 6, 7, 8, 9)   ##说明a是元组类型
45
  • 关键字参数
def getStuInfo(name,age,**kwargs):                                    
    """                                                               
    **kwargs是一个字典,可以传递任意多的key-value                                   
    :param name:                                                      
    :param age:                                                       
    :param kwargs:                                                    
    :return:                                                          
    """                                                               
    print(name,age)                                                   
    print(kwargs)                                                     
                                                                      
getStuInfo('westos','19',hobbies=['coding','running'],gender='female')

结果:
westos 19
{'hobbies': ['coding', 'running'], 'gender': 'female'}

函数的返回值(return)

  • 函数运行的结果,还需要进一步操作时,给一个返回值
  • return用来返回函数执行结果,如果没有返回值,默认为None
  • python可以间接返回多个值(返回了一个元组)
  • 一旦遇到return,函数执行结束,后面的代码不会执行
def mypow(x,y=2):                                                          
    return x ** y,x +y                                                     
    print('hello')        ##一旦遇到return则不会执行后面的代码,即不会输出hello                
                                                                           
a,b = mypow(3,4)                                                           
print(a,b)                                                                 

结果:
81 7
def mypow(x,y=2):  
    return(x ** y) 
                   
a = mypow(2,3)     ##return返回值要用一个参数接收
print(a)           

结果:
8



def mypow(x,y=2):      
    print(x ** y)      
                       
a = mypow(2,3)         
print(a)               
结果:
8
None

函数的局部变量与全局变量

  • 局部变量:在函数内部定义的变量,只在函数内部起作用,函数执行结束,变量会自动删除
  • 全局变量:在程序的执行过程中一直有效
a = 1      ##全剧变量                
print('outside:',id(a))          
                                 
def fun():                       
    a = 5                        
    print('inside:',id(a))       
                                 
fun()                            
print(a,id(a))      ##输出a为全局变量a=1

结果:
outside: 9334784
inside: 9334912
1 9334784
  • global:声明变量的作用域为全局作用域
a = 1      ##全剧变量                             
print('outside:',id(a))                       
                                              
def fun():                                    
    global a   ##声明变量的作用域为全局作用域               
    a = 5                                     
    print('inside:',id(a))                    
                                              
fun()                                         
print(a,id(a))                                

结果:
outside: 9334784
inside: 9334912
5 9334912