#函数定义
#函数调用
#函数文档
#关键字参数
#默认参数
#收集参数
#返回多个返回值
#变量的作用域
#内嵌函数
#闭包
#lambda表达式
'''一个最简单的函数'''
def m_function():
pass
#函数的调用
m_function()
'''带参数的函数'''
def m_func_para(name):
print(name + ' 万岁万岁万万岁!')
m_func_para('cxy')
'''带返回值的函数'''
def add(num1, num2):
return num1 + num2
print(add(3, 12))
'''函数文档'''
#方便调用者更好的了解该函数
def m_fun_doc():
'这是一个函数文档\n \
这是函数文档的第二行'
'这个不再是函数文档,只有上面那个才是'
print('函数文档好!')
#获取函数文档的方法
print(m_fun_doc.__doc__)
help(m_fun_doc)
'''函数的关键字参数'''
#一个普通的函数
def m_Say(people, words):
print(people + ': ' + words)
#正确的调用
m_Say('Computer', 'Hello World')
#如果不小心写反了参数,输出内容就不对了
m_Say('Hello World','Computer')
#为了避免这种状况,可以这样调用函数,防止记不住参数顺序导致程序错误
m_Say(words = 'Hello World', people = 'Computer')
'''函数的默认参数'''
def m_Say_default(people = 'Jobs', words =
'Life is brief, and then you die, you know?'):
print(people + ': ' + words)
#当不给参数时,会传入默认参数
m_Say_default()
#当参数只给了一部分,如下面的,则会默认传入第一个参数里
m_Say_default('What?')
'''收集参数(可变参数)'''
def m_func_unknown(*params):
print('参数的长度是:', len(params))
print('第一个参数是:',params[0])
#调用方法
m_func_unknown(1,2,3,4,5,6)
#如果具有收集参数的函数还需要有其他固定的参数
#则固定参数必须要要用关键字参数的方式来传入
#否则会被认为是收集参数的一部分,比如
def m_func_unknown_test(*params, others):
print('收集参数的长度是:', len(params))
print('第一个收集参数是:',params[0])
print('固定参数为:' ,others)
m_func_unknown_test(1,2,3,4,5,6, others = 'others')
#建议:包含收集参数的函数,其他参数推荐设置为默认参数
'''函数与过程'''
#python是没有过程的(如果没有用户定义的返回值,会返回一个None)
def hello():
print('hello')
temp = hello()
print(temp) #会打印一个None
print(type(temp)) #<class 'NoneType'>
'''多个返回值的参数'''
def m_multi_return():
return [1, 'Hello', 5.678]
print(m_multi_return())
'''函数变量的作用域'''
#全局变量和局部变量
#函数内部的变量(局部变量)在函数外部不可见
#如果在一个函数内部试图修改一个全局变量,
#则python会创建一个和全局变量同名的局部变量
#函数内部的修改只在新创建的局部变量上进行
#例如:
g = 1
def test4var():
g = 2
print(g)
test4var()
print(g)
#global关键字,在函数内部使用全局变量
def test4global():
global g
g = 2
print(g)
test4global()
print(g)
'''内嵌函数'''
#在一个函数内部创建一个函数
def fun_p():
print('fun_p is called')
def fun_c():
print('fun_c is called')
fun_c()
fun_p()
#内部函数的作用域仅限所在函数内
'''闭包'''
def FunX(x):
def FunY(y):
return x * y
return FunY
i = FunX(8)
print(type(i)) #i是一个‘函数’
#通常调用方法
print(i(5))
#闭包使用方法
print(FunX(8)(5))
#另一个例子
def Fun1():
x = 5
def Fun2():
#声明x不是一个局部变量,就可以引用到外部的x了
nonlocal x
x *= x
return x
return Fun2()
print(Fun1())
'''lambda表达式'''
def m_func_l(x):
return 2 * x
print(m_func_l(5))
#等同于:
f = lambda x : 2 * x
print(f(5))
#lambda 关键字之后,‘:’之前为参数,‘:’后为函数主体
#两个参数的lambda表达式
f = lambda x, y : x + y
print(f(1,2))
Python学习笔记 函数
最新推荐文章于 2022-12-08 15:35:07 发布