python函数

函数

##函数基础

什么是函数?
函数指的是一段被封装起来的代码块,它可以重复使用,来实现一个或多个关联的功能。
如python内置函数len()是求出字符串或数组长度(元素个数)。
print(len("Python"))
print(len([1,2,3,4,5,6,7,8,9])
结果:
6
9

###函数的定义

即命名一个函数:
	函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。如 def add():
	任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
	函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。(用3引号注释)
	函数内容以冒号起始,并且缩进。
	return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

定义函数语法:
def 函数名(参数列表):
	函数体

#如:
def add(a,b):
	return a+b

###函数调用

调用,即引用函数,通过给函数中参数赋值(传参)的方式使用函数中的代码实现具体的功能。	
调用函数的格式为 函数名([参数值]),函数有参数时,需要赋值给对应参数,若没有,则不需要赋值。
比如调用上面的add()函数。
print(add(4,5))  # 打印调用后的结果

use_function = add(1,4) # 使用一个对象(变量)来调用函数,即将函数代码块的结果赋予给一个变量
print(use_function) # 输出调用对象(调用方)
打印结果:
9
5

##参数

参数的定义

参数就是在定义函数时,括号中定义的变量,这种参数又称为形式参数,简称形参。
函数调用时,赋予参数的值是实际参数,是实实在在的,简称实参。
调用函数时给形参传递实参的过程成为传参。

参数的分类

- 必需参数:
	在定义函数时命名的参数,在调用函数时,必须给它(们)赋值,且顺序要与函数的参数一致,必需参数又称为位置参数。
- 关键字参数:
	在调用函数时,根据参数名进行赋值。如add(a=3,b=1)
- 默认(值)参数:
	在定义函数时,给参数直接赋值。如add(a,b=3),设置默认值参数必须放在位置参数后面。在函数调用时,可以不需要给设置了默认值的形参传参。
- 不定长参数:
	在定义函数时,参数名前加1个星号(*),表示这个参数是一个容器,可以传任意个实参。

###传参示例

必需参数示例:
def add(a,b):
	return a+b
c = add(4,5)
print(c)
输出结果:
9

关键字参数示例:
def add(a,b):
	return a+b
c = add(a=3,b=4)
print(c)
输出结果:
7

默认值参数:
def add(a,b=5):
	return a+b
c = add(6)
输出结果:
11

不定长参数:
def add(*nums):
	return nums
c = add(1,3,4,5,6)
for i in c:
	print(i)
输出结果:
1
3
4
5
6

##return语句

函数体的返回值是通过return实现返回的,在函数体中,代码块结束没有return语句,返回结果为None

举例:
def add(a,b):
	a+b
c = add(4,5)
print(c)
输出结果:
None

# 注意:因为上述函数中没有使用return语句,所以不会返回函数体执行的结果,只会返回None

##变量的作用域

顾名思义,变量的作用域,就是指变量的影响范围(能生效的代码块)。即变量能够作用的范围取决于它在什么地方赋值的。

根据变量的影响范围可以分为:
- 全局变量:通常是指在代码最开始就进行赋值的变量,它将可能影响自它以下所有的代码
- 局部变量:参考同级别缩进的代码块进行定义和赋值的变量,它只能影响当前缩进级别及以下的代码块。
- 成员变量:通常伴随着成员运算符in一起出现,用于判断该变量是否属于某个数组或集合。

# Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,即这类变量无法影响到模块、函数和类。
# 其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问

###示例

全局变量
x = 1
while x <= 10:
	print("判断正确")
	x += 1
# while循环会受x初始值1的影响来执行判断,即1是否小于或等于10,据此来决定是否执行while循环体。

局部变量
x = 3
def add():
	x = 5 # 函数内部生效的变量,无法访问外部变量(不受x = 3的影响)
	y = 6
	return x*y
print(add())
输出结果:
30

成员变量大多在for循环中的循环变量,用于确定某个变量是否属于某个数组或集合

x = 1
y = [1,2,3]
print(x in y)
输出结果:
True

##global和nonlobal关键字

global关键字是声明需要重新定义(赋值)某个变量,将其声明(修改)为全局变量,在重新声明后的代码中都生效。
global和nonlocal作用相同。

举例:
sum = 0
def add(a,b):
	global sum 	#声明sum即将被重新赋值,且会影响之后的全局代码
	print("原本sum的值是:%d"%(sum))
	sum = (a+b)**2  #通过(a+b)**2的结果赋值给sum作为新的值
	return sum
print("现在sum的值是:%d"%(add(4,5)))

输出结果:
0
81
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值