py初识第三天

函数

调用函数

定义函数

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

def my_abs(x):
	if x >= 0:
		return x
	else:
		return -x
print(my_abs(-1000))

保存上述代码后,可以直接在交互器里直接调用

>>> from exc1 import my_abs
>>> 1000
1000
>>> from exc1 import my_abs
>>>
>>> -100
-100

空函数

使用pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。

if age >= 18:
    pass

参数检查

参数数量不对,py解释器可以自查

>>> my_abs(1,2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: my_abs() takes 1 positional argument but 2 were given
>>>

但是如果参数类型不对,Python解释器就无法检查

>>> my_abs('A')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in my_abs
TypeError: unorderable types: str() >= int()
>>> abs('A')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: bad operand type for abs(): 'str'

可以加入参数检查

def my_abs(x):
	if not isinstance(x,(int,float)):
		raise typeerror('bad operand type')
	if x >= 0:
		return x
	else:
		return -x
print(my_abs(-1000))

示例

import math

def move(x,y,step,angle=0):
	nx = x + step * math.cos(angle)
	ny = y - step * math.sin(angle)
	return nx,ny
x,y = move(100,100,60,math.pi/6)
print(x,y)
import math

def quadratic(a,b,c):
	
	if (b**2)-(4*a*c) < 0:
		print('此方程无解')

	else:
		
		x1 = ((-b) + math.sqrt((b**2)-(4*a*c)))/(2*a)
		x2 = ((-b) - math.sqrt((b**2)-(4*a*c)))/(2*a)
	return (x1,x2)


a = int(input('请输入a的值:'))
b = int(input('请输入b的值:'))
c = int(input('请输入c的值:'))
print(quadratic(a,b,c))

函数的参数

位置参数

以下代码举例

def power(x):
	return x * x
print(power(4))

对于power(x)函数,参数x就是一个位置参数。
当调用power函数时,必须传入有且仅有的一个参数x,但是当调用三次方以及更多时可以将power(x)修改为power(x,n)

def power(x,n):
	return x ** n
print(power(4,4))

修改后的x,n为两个参数,会按照位置分别传递给x及n

默认参数

以下段代码为例,当我们调用函数时,少输入了一个位置参数n,这个时候可以将n设为默认参数

def power(x,n):
	return x ** n
print(power(12))
//程序报错
  File "exc1.py", line 3, in <module>
    print(power(12))
TypeError: power() missing 1 required positional argument: 'n'
def power(x,n=2):
	return x ** n
print(power(12))

以上为例子,默认参数的存在可以简化函数的调用,但是设置默认参数需要注意以下几点:

1、必选参数在前,默认参数在后,否则Python的解释器会报错
2、函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数

可变参数

在Python函数中,还可以定义可变参数。可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。
要定义这个函数,我们必须要确定参数的个数,以list或者tuple的形式来进行传参

def calc(numbers):
	sum = 0
	for n in numbers:
		sum = sum + n * n
	return sum
>>> calc([1, 2, 3])
14
>>> calc((1, 3, 5, 7))
84

如果利用可变参数我们可变化问为如此

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
>>> calc(1, 2, 3)
14
>>> calc(1, 3, 5, 7)
84

定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值