函数和模块的使用

前言

我觉得吧,人类的情感其实就是一个函数调用的过程。封存的记忆是代码块,当下的所见所闻,是传入的参数,表现出来的情感就是返回值。奈何我冷血无情,所有的记忆代码块的返回值都是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变量作用域的问题的,但是突然发现,这个问题本身就是一个大坑,感觉需要专门的一节来做记录,所以,函数这一块暂时就这样吧,太高深的用法还不知道也还没遇上,到时候再说吧。

上一节:阶段练习(1)
下一节:Python的变量作用域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值