#Python函数的使用
#定义一个无参函数
def func():
print("This is a function!")
#调用一下函数
func()
#定义一个有参函数
def func2(message,host,type):
print(f"Host {host} reported that {message},type={type}")
#调用一下函数
func2("Buffer OverFlow","192.168.1.2","5")
func2(message="Buffer Error",type="5",host="192.168.3.1")#以键值对的形式乱序调用
#定义一个默认参数函数
def func3(message,host,type="5"):
print(f"Host {host} reported that {message},type={type}")
#缺省参数的情况下调用一下
func3("Input Error","127.0.0.1")
#func3("Input Error")#不满足基本参数个数2,会报错!
#定义一个可变长参数类型函数
def func4(*args):
print(args)
#调用一下可变参数函数
func4('Hello','Earth')#传入一个2参(元组)
func4('Learn','To','Live')#传入一个3参(元组)
numbers = ['hello', 'again']
func4(numbers)#直接传入一个元组
func4(*numbers)#对元组进行转格式 传入
#定义一个关键词参数类型函数
def func5(message,**kwargs):
print(f"message is {message}, other is {kwargs}")
#调用
func5("Error",level="Hello",Type="404")#自己指定元组类型插入
#定义一个有返回值的函数:费布拉切数列
def fib(num):
if num==0:
return 0
elif num==1:
return 1
else:
return fib(num-1)+fib(num-2)
#调用
print(fib(10))
#定义一个传入list的函数
def func6(list):
print(f"The message is {list}")
#调用
func6(['Hello','Pet'])#传入一个list
func6(("2333",23,"56766"))#传入一个tuple
#函数运行的一个问题
def func7(lans=[]):
lans.append("\n")
return lans
#调用几次
print(func7())
print(func7())
#发现多次调用,lans并不会释放,而是多出来了\n
#可以这样更改
def func8(lans=None):
if lans==None:
lans=[]
lans.append('\n')
return lans
#调用几次
print(func8())
print(func8())
运行结果:
This is a function!
Host 192.168.1.2 reported that Buffer OverFlow,type=5
Host 192.168.3.1 reported that Buffer Error,type=5
Host 127.0.0.1 reported that Input Error,type=5
('Hello', 'Earth')
('Learn', 'To', 'Live')
(['hello', 'again'],)
('hello', 'again')
message is Error, other is {'level': 'Hello', 'Type': '404'}
55
The message is ['Hello', 'Pet']
The message is ('2333', 23, '56766')
['\n']
['\n', '\n']
['\n']
['\n']