python函数

哈哈又来学习了,python的函数,依旧放张图片bi’xie 哈哈啊。
python函数_第1张图片

1.调用函数

Python内置了很多有用的函数,我们可以直接调用。
python很强大有许多函数直接可以调用,python官网上有详细说明:https://docs.python.org/3/library/functions.html#abs
比如我们调用求绝对值函数abs:

>>> abs(20)
20
>>> abs(-10)
10
>>> abs(2.21)
2.21
>>>

调用函数的时候,如果传入的参数数量和参数的类型不对,会报错的。

>>> max(1, 2)
2
>>> max(2, 3, 1, -5)
3

数据类型转换

>>> int('124214')
124214
>>> int(124.214)
124
>>> float('214.12')
214.12
>>> float(12)
12.0
>>> str(100)
'100'
>>> bool(1)
True
>>> bool('')
False
>>>

也可以把函数名称赋给一个变量:

>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1

用Python内置的hex()函数把一个整数转换成十六进制表示的字符串:

n={'n1':255,'n2':1000}
print('将十进制%s,转化为十六进制为%s' % (n['n1'],hex(n['n1'])))
print('将十进制%s,转化为十六进制为%s' % (n['n2'],hex(n['n2'])))

2.定义函数

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

def my_abs(x):
	if x>=0:
		return x
	else:
		return -x
print(my_abs(-9))
#结果:9

如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。

空函数
如果想定义一个什么事也不做的空函数,可以用pass语句;pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。

def nop():
	pass
age=1
if age>2:
	pass

参数检查
调用函数时,如果参数个数不对,Python解释器会自动检查出来,并抛出TypeError:
python函数_第2张图片
如果参数的类型错了,是会提醒我们的:
python函数_第3张图片
返回多个值
函数是可以返回多个值的,比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的新的坐标:

import math
#import math语句表示导入math包,并允许后续代码引用math包里的sin、cos等函数。
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)
#其实函数的返回值也是单一的
#我们可以这样写:
r=move(100,100,60,math.pi/6)
print(r)
#结果:
#151.96152422706632 70.0
#(151.96152422706632, 70.0)

定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程:
ax2 + bx + c = 0
的两个解。
提示:计算平方根可以调用math.sqrt()函数:

import math
def quadratic(a,b,c):
	k=b*b-4*a*c
	if not isinstance(a+b+c,(int,float)):
		raise TypeError('wrong type')
	elif k<0:
		return "没有实数解!"
	elif k==0:
		x=-b/2/a
		return "只有一个实数解:x=%f"%x
	else:
		x1=(-b + math.sqrt(k)) / 2 / a
		x2=(-b - math.sqrt(k)) / 2 / a
		return "%.1f,%.1f"%(x1,x2)

print('quadratic(2, 3, 1) =', quadratic(2, 3, 1))
print('quadratic(1, 3, -4) =', quadratic(1, 3, -4))
#结果:
#quadratic(2, 3, 1) = -0.5,-1.0
#quadratic(1, 3, -4) = 1.0,-4.0

3.函数的参数

Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

位置参数
对于power(x)函数,参数x就是一个位置参数。

def power(x):
	return x*x

如果计算x3,只需要修改power函数:

def power(x,n):
	s=1
	while n>0:
		n-=1
		s*=x
	return s
print(power(2,3))
#结果:8

修改后的power(x, n)函数有两个参数:x和n,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和n。

默认参数
新的power(x, n)函数定义没有问题,但是,旧的调用代码失败了,原因是我们增加了一个参数,导致旧的代码因为缺少一个参数而无法正常调用:

def power(x,n=2):
	s=1
	while n>0:
		n-=1
		s*=x
	return s
power(5)
print(power(5))
print(power(5,3))#传入3还是会计算n=3的值
#结果:
#25
#125

一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面);
二是如何设置默认参数。
当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
使用默认参数有什么好处?最大的好处是能降低调用函数的难度。
举个例子,我们写个一年级小学生注册的函数,需要传入name和gender两个参数:

def enroll(name, gender):
    print('name:', name)
    print('gender:', gender)

这样,调用enroll()函数只需要传入两个参数:

>>> enroll('Sarah', 'F')
name: Sarah
gender: F

等有空再学习更新,哈哈!

你可能感兴趣的:(python)