1.组成和意义 
 
	def 函数名(参数):
		函数体
		return 返回值
  
 
2.命名规则\规范 
- 命名规则: 
   
 - 命名规范(无强制性,但有利于提高代码可读性) 
  
- 大驼峰 FunctionName
 - 小驼峰 functionName
 - 下划线 function_name
      
3.参数 
函数的参数可以分为位置参数、默认参数、动态参数三种类型,当然也可以不定义参数  ==定义参数/传参顺序:==位置参数-*args-默认参数-**kwargs  
 
def hello():
	print("hello world")
hello()
  
 
def get_num(num_1, num_2):
    return num_1 + num_2
get_num(10,20) 
  
 
def get_num(num_1, num_2):
    return num_1 + num_2
get_num(10) 
get_num(10,10) 
  
- 动态参数:不定项参数
  *args:把剩余参数以元组形式存储  **kwargs:把带有变量名的参数以字典形式存储   
def test(*args,**kwargs):
    print(args)
    print(kwargs)
test(1,2)
print("="*50)
test(a=1,b=2)
print("="*50)
test(1,2,a=10,c=3)
"""
(1, 2)
{}
==================================================
()
{'a': 1, 'b': 2}
==================================================
(1, 2)
{'a': 10, 'c': 3}
"""
  
4.返回值 
- 函数的返回值return:表示函数的结束,类似循环中的break
 - 是否一定要有返回值?否,参照ls.sort(),没有定义return,默认返回值为None
 - 函数的返回值可以是任意类型,根据返回值的类型
   
def test():
	print("123")
	return
	print("我不会被执行")
def is_woman(sex):
    if sex == "woman":
        return True
    else:
        return False
is_woman("woman")
  
5.变量的作用域 
- 全局变量 (实参) 
   
 - 局部变量 (形参) 
  
- 作用于局部,在局部执行后被释放
 - 函数、类中定义的变量成为局部变量
    - global关键字用于在函数中声明使用全局变量
   
num = 10 
def get_num():
    num = 20 
    print(num)
get_num() 
print(num)
"""
输出结果:
20 # 执行get_num()函数,num为局部变量中的num
10 # get_num中的局部变量num=20已被释放,此时num=10,故打印出10
"""
  
| 状态 | 结果 | 
|---|
 | 未使用global声明变量and数据类型是简单类型(如:数值、字符串) | 函数中可以读取该变量,但不能修改 |  | 未使用global声明变量and数据类型是复杂类型(如:元组、列表) | 函数中可以读取和修改该变量 |  | 已声明变量 | 可以读取和修改变量 |   
num = 10
def test():
	return num
print(test()) 
ls = [1, 2, 3]
def test():
	print(ls) 
	ls.append(4) 
	return ls
test() 
print(ls) 
num = 10
def test():
	global num
	num+=10
	return num
print(test()) 
print(num) 
  
6.匿名函数 
常用场景:  
info = [("a", 1), ("b", 3), ("c", 2), ("d", 4)]
info.sort(key=lambda x: x[1])
print(info)
  
匿名函数参考博客:https://blog.csdn.net/PY0312/article/details/88956795 
                
                
                
        
        
    
 
 |