前言
我觉得吧,人类的情感其实就是一个函数调用的过程。封存的记忆是代码块,当下的所见所闻,是传入的参数,表现出来的情感就是返回值。奈何我冷血无情,所有的记忆代码块的返回值都是null,虽然简单却又有些乏味了。
函数的简单介绍
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
Python中的函数非常灵活,比C/Java好用太多。下面是定义一个函数的基本规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个或者多个值给调用方。不带表达式的return相当于返回 None。
这里简单说一下Python中的函数和C/Java的一些区别:
- 不需要定义返回值类型。
- 可以设置可变参数!
- 参数可以设默认值,在设置了默认值的情况下,调用函数的时候可以不完全与函数定义的一致。
- 可以有多个返回值,调用的时候可以用多个函数接收多个返回值。
下面写一个简单的函数,用于计算前n项自然数的和。
"""
函数的编写
Author: 大大洪大大
Time: 2019-5-21
"""
def sum_n(n):
"""
计算一前N项自然数的和
:param n:
:return:
"""
sum = 0
for i in range(1, n + 1):
sum += i
return sum
if __name__ == '__main__':
num1 = int(input("请输入一个整数:"))
print("自然数的前%d项的和是%d" % (num1, sum_n(num1)))
num1 = int(input("请再输入一个整数:"))
print("自然数的前%d项的和是%d" % (num1, sum_n(num1)))
结果如下:
可以想象,如果没有函数,那么如果我要计算两次不同的前n 项和,那么我就得重复写两次计算的代码,这已经很烦人了。那如果要计算100次呢?那显然就不可能了。所以说,函数可以减少重复代码的使用。
来看一个吊炸天的用法,可变参数,代码直接用原教程的。
# 在参数名前面的*表示args是一个可变参数
# 即在调用add函数时可以传入0个或多个参数
def add(*args):
total = 0
for val in args:
total += val
return total
print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3))
print(add(1, 3, 5, 7, 9))
再看一个吊炸天的用法,多返回值!
def cool_function():
print("这是一个毫无意义但是吊炸天的函数")
return 0, 1
if __name__ == '__main__':
x, y = cool_function()
print(x, y)
吊炸天的用法多的是,比如这个,函数中嵌套定义函数!
def cool_function():
print("这是一个毫无意义但是吊炸天的函数")
def cooler_function():
print("这是一个更吊的函数")
cooler_function()
return 0, 1
if __name__ == '__main__':
x, y = cool_function()
print(x, y)
但是cooler_function这个函数只能在cool_function函数中调用,在其他地方是无法调用的。
本来想在这里记录一下Python变量作用域的问题的,但是突然发现,这个问题本身就是一个大坑,感觉需要专门的一节来做记录,所以,函数这一块暂时就这样吧,太高深的用法还不知道也还没遇上,到时候再说吧。