定义一个函数的基本语法(含一些注意事项):
# 函数名:1. 名字最好能体现函数的功能,一般用小写字母和单下划线、数字等组合
# 2. 不可与内置函数重名(内置函数不需要定义即可直接使用)
def 函数名(参数):
# 参数:根据函数功能,括号里可以有多个参数,也可以不带参数,命名规则与函数名相同
# 规范:括号是英文括号,后面的冒号不能丢
函数体
# 函数体:函数的执行过程,体现函数功能的语句,要缩进,一般是四个空格
return 语句
# return语句:后面可以接多种数据类型,如果函数不需要返回值的话,可以省略
这是自己写的一个与Python的内置函数:len()函数,具有相同功能的函数:
def my_len(words):
#函数的参数是字符串
counter = 0
for i in words:
counter += 1
return counter
a = '这是一个与Python的内置函数:len()函数具有相同功能的函数'
print(my_len(a))
#等价于print(my_len('这是一个与Python的内置函数:len()函数具有相同功能的函数'))
# 》》 33
def test():
print('测试!')
test()
# 》》 测试!
有一些函数直接使用 ‘函数名()’ 调用执行,括号内并没有带参数,原因是这些函数在其内部已经实现了打印的功能,可以直接调用执行,不需要参数的参与。
需要注意的是,即便是没有参数,我们在调用函数的时候也不能省略括号。
def test(one, two):
print('测试:' + one)
print('测试:' + two)
test('一','二')
# 》》 测试:一
# 》》 测试:二
括号内可以传入多个参数,当有多个参数的时候,我们就必须按照顺序和数量传递。
def test(one, two, three = '三'):
print('测试:' + one)
print('测试:' + two)
print('测试:' + three)
test('一','二')
# 》》 测试:一
# 》》 测试:二
# 》》 测试:三
直接在定义函数的时候给参数赋值。
如果一个函数的某个参数值总是固定的,那么设置默认参数就免去了每次都要传递的麻烦。不过默认参数并不意味着不能改变。
需要注意的是:默认参数必须放在位置参数之后。
def test(*number):
return number
order = test('一','二','三')
#括号里的这几个值都会传递给参数number
print(order)
print(type(order))
# 使用 type()函数 可以查看返回值的数据类型
# 》》 ('一', '二', '三')
# 》》
即传递给参数的数量是可选的、不确定的。
它的格式比较特殊,是一个星号*加上参数名,它的返回值也比较特殊,它的返回值类型叫做元组(tuple)。
print()函数 完整的参数:`
print(*objects, sep = ' ', end = '\n', file = sys.stdout, flush = False)
函数,不仅可以支持输入多个参数,而且也可以同时输出多个值。
return a
return 'b'
切记!我们不能写成上面这种两行的格式,是因为函数在执行过程中遇到第一个return语句就会停止执行,所以第二个 return ‘b’ 永远不会被执行。
注:随机功能:可以用random模块中的 'random.choice()'函数来
global xxx('xxx'表示:变量名)
global语句一般写在函数体的第一行,它会告诉Python,“我希望 ‘xxx’ 是个全局变量,所以请不要用这个名字创建一个局部变量”。
函数嵌套最简单地例子:
print(len('我和你'))
例:
def div(num1, num2):
growth = (num1 - num2) / num2
percent = str(growth * 100) + '%'
return percent
def warning():
print('Error: 你确定上个月一毛钱都不赚不亏吗?')
def main():
while True:
num1 = float(input('请输入本月所获利润'))
num2 = float(input('请输入上月所获利润'))
if num2 == 0:
warning()
else:
print('本月的利润增长率:'+div(num1,num2))
break
main()