一、函数
- 函数的使用: 先定义函数,再调用函数
- 定义函数:
1.def后面加一个空格
2.函数名自己定义,约定俗成,大驼峰只给类命名
3.后面括号省略号不能省略
4.函数内所有代码缩进 - 函数的调用: 直接写出函数名字,后面括号不能省,括号内容据情况。
#定义函数
def liyu():
print("永远的")
print("大魔王")
#使用函数
liyu()
二、函数的参数和返回值
**一、参数:**负责给函数传递一些必要信息或数据。
1.形参(形式参数):函数定义的时候用到,没有具体指,只是一个占位符
2.实参(实际参数):在调用函数的时候输入的值
def hello(person): #定义函数,person无实际意义,为形参
print("{0},你好帅啊".format(person)) #format表示把person里面的值替换掉大括号
print("{},我要给你生猴子".format(person))
a = "李彧" #调用函数,把a作为实参传入
hello(a)
#结果就为李彧,你好帅啊
# 李彧,我要给你生猴子
二、返回值: 函数执行的一个结果
- 用return表示
- 如果没有return关键字,系统自动返回None,但推荐使用return None
- return一旦执行,函数立即结束
三、Help函数
也是一个函数,帮助你解决问题,如函数的用法
help()
用help(print)出来以下文档:
Help on built-in function print in module builtins:
print(…)
print(value, …, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
sep后面的表示字符串插入在变量之间,默认是空格。
end后面的表示是最后一个值后面附加了字符串,默认是新的一行。
#九九乘法表 version1.0
def jiujiu():
for o in range(1,10): #控制外循环,从1——9
for i in range(1, o + 1): #控制内循环,从1到跟行数相等的数字
print(o * i, end=" ") #print有个特性是打印出来过后会自动换行,运用end关键字不使其换行而是两个空字符串
print() #注意与上一个for同级,在一行打印完后换行。print打印空就是换行
return None
#九九乘法表 version2.0
def printLine(Line_num):
for i in range(1,Line_num + 1):
print(Line_num * i, end=" ")
print()
def jiujiu():
for o in range(1,10):
printLine(o)
return None
四、参数详解
1.普通参数/位置参数
def normal_para(one, two, three):
print(one + two)
print(one + two + three)
return None
normal_para(1, 5, 7) #注意调用参数时参数个数要与定义时的参数个数相等
#结果为6,13
2.默认参数
def default_para(four, five, six=66): #默认参数就是赋予一个默认值给一个参数,调用参数就可以不调用默认参数,但是他也有默认值。但调用时重新赋值,将采用重新赋值的值
print(four + five)
print(four + six)
return None
default_para(4, 5) #调用参数与定义参数个数不等,但是默认参数six=66
#结果为9,70
default_para(4, 5, 6) #这里调用默认参数six,但赋值6给他,不采用原先赋值的默认值
#结果为9,10
3.关键字参数
def key_para(seven, eight, nine):
print(seven + eight)
print(seven + eight + nine)
return None
key_para(eight=8, seven=7, nine=9) #关键字参数调用时将值赋予给命名的参数,这样就防止在调用时记不住相应参数的位置
#结果已依旧为15,24
4.收集参数
把没位置的、不能和定义参数相对应的参数,放入一个特定的数据结构。
def zhangchun1(*args):
print("hahaha")
print(type(args))
for i in args:
print(i)
zhangchun1("大家好","我是来自永川的小春","今年19岁啦")
'''结果为
hahaha
<class 'tuple'>
大家好
我是来自永川的小春
今年19岁啦
'''
#收集参数可以不带实参调用,此时为一个空元组
zhangchun1()
'''结果为
hahaha
<class 'tuple'>
'''
5.收集参数之关键字收集参数
def zhangchun2(**kwargs):
print("哈哈哈,没想到吧,又是我")
print(type(kwargs))
for k,v in kwargs.items():
print(k, "---", v)
zhangchun2(name="张春", age=19, hobby="王者荣耀,看电影", address="永川")
'''结果为
哈哈哈,没想到吧,又是我
<class 'dict'>
name --- 张春
age --- 19
hobby --- 王者荣耀,看电影
address --- 永川
'''
#也可以不调用实参
6.混合使用
使用规则:普通,关键字参数优先,多余的再打包。
def stu(name, age, *args, hobby="王者荣耀", **kwargs):
print("又又又又是我来作自我介绍啦:")
print("我叫{0},今年{1}岁啦".format(name, age))
if hobby == "王者荣耀":
print("我的爱好是打王者荣耀,我王者打得可溜了,我带你们打")
else:
print("我是实在没有爱好了")
for i in args:
print(i)
print("*" * 50)
for k,v in kwargs.items():
print(k, "---", v)
print("*" * 50)
stu("张春", 19, "你知道吗", "我也喜欢小静", hobby="王者荣耀", address="", shortcoming="so cool")
'''结果为
又又又又是我来作自我介绍啦:
我叫张春,今年19岁啦
我的爱好是打王者荣耀,我王者打得可溜了,我带你们打
你知道吗
我也喜欢小静
**************************************************
address --- 永川
shortcoming --- so cool
**************************************************
'''
7.收集参数的解包
把参数放进list/dict中,再把list/dict放入收集参数中
def ceshi(*args):
n = 0
for i in args:
print(n)
n += 1
print(type(i))
print(i)
l = ["张春", "黄俊华", 19, 21]
ceshi(l)
'''结果为
0
<class 'list'>
['张春', '黄俊华', 19, 21]
'''
#此时,args表示的形式为字典里的一个list类型元素,即args = (["张春", "黄俊华", 19, 21], ...)
#此时的使用,就需要解包,在l前面加一个*,对dict解包加两个*
ceshi(*l)
'''结果为
0
<class 'str'>
张春
1
<class 'str'>
黄俊华
2
<class 'int'>
19
3
<class 'int'>
21
'''
五、函数文档
对当前函数提供参考信息。一般在定义的第一行使用三引号说明。
用help或 .__doc__查看
def hanshuwendang():
'''这是一个函数文档
您知道吗
我猜您不知道
哈哈哈
'''
pass
help(hanshuwendang)
hanshuwendang.__doc__
'''结果分别为
Help on function hanshuwendang in module __main__:
hanshuwendang()
这是一个函数文档
您知道吗
我猜您不知道
哈哈哈
*****************************************************************
'这是一个函数文档\n 您知道吗\n 我猜您不知道\n 哈哈哈\n '
'''