Python6-函数
1、函数概述
1.1函数概念
所谓函数,就是把重复的代码单独的分离出来,放在⼀个公共的地方,以后可以⼀直的进行调用,这样就可以解决多次重复来编写。
1.2函数的定义形式
函数定义:定义函数使用的关键字是def
如:def 函数名称(函数的参数):
函数表达式
1.3函数的参数
常用的函数的参数有形式参数、实际参数、默认参数和动态参数。
(1)形式参数:函数里面的参数叫做形式参数;
(2)实际参数:函数被调用的时候,给参数赋予的值叫做实际参数。
(3)默认参数:在定义函数的时候给形式参数指定默认的值叫做默认参数。默认参数只能放在非默认参数的后面,如果放在前面就会报错。在调用过程中,如果没有给
该形式参数赋值,那么他的值默认就是我们定义的默认值,如果我们给形式参数定义了值,那么他的值就是我们新定义的值。
(4)动态参数:定义一个函数的时候,当函数的形式参数个数不确定,数据类型不确定的时候,我们就可以用动态参数。
如def func(a,**b),a和b为自定义的变量,一般a和b默认用args和kwargs,即def func(args,**kwargs)。
*:代表的是元组的数据类型
**:代表的是字典的数据类型
1.4函数的调用
函数写完后,必须要经过调用才能生效,如果不调用,不会生效。调用函数的方式是:函数名称()。函数调用的注意事项:
(1)函数在调用时,可以填写形式参数,也可以不填写,但是要注意的是要填写就都填写,要不填写就都不填写;
(2)函数在调用的时候,填写的实际参数要与形式参数的顺序、个数保持一致;
(3)函数有形式参数的时候,调用函数必须填写实际参数。
2、函数应用举例
2.1函数定义与调用
#函数定义
def fun():
print("hello world")
#函数调用
fun()
2.2登录
def login(username='qqq',password='www'):
if username=='qqq' and password=='www':
print('登陆成功')
else:
print('登陆失败')
login()
login('qqq','www')
3.函数的返回值
3.1函数返回值概述
(1)一个函数,不管是否有return,他都是有返回值的,如果没有return,它的返回值是None。
(2)如果有return,函数的返回值是return后面的内容,切记:return后面的代码是不能够执行的。
(3)函数返回值的价值是:把函数与函数能够建立一层关联关系。
(4)用代码来处理动态参数可以用函数的返回值。
3.2函数返回值实例
def login(username='qqq',password='www'):
if username=='qqq' and password=='www':
return True
else:
return False
def profile(login):
if login==True:
print('查看个人主页')
else:
print('错误')
profile(login())
4.内部函数
4.1定义
内部函数就是内部已经实现的函数,我们直接调用即可。
4.2常用内部函数
4.2.1数字与字母转换
4.2.1.1数字转字母:chr
print(chr(98))
4.2.1.2字母转数字:ord
print(ord('a'))
4.2.2输出某个范围数字:range
#结合循环输出某个范围内的数字,包含开始不包含结尾:range(start, end, scan):,scan就是步长,默认为1.
for a in range(1,9):
print(a)
for b in range(1,9,2): #步长为2
c=(str(b)) #把输出的数据转换为字符串
print(list(c)) #把字符串转换为列表
4.2.3输出某个范围内的随机数字:random
'''验证码生成案例'''
import random
list1=[]
def sign():
for i in range(10):
r=random.randint(97,123)
list1.append(chr(r))
return ''.join(list1)
print(sign())
4.2.4把字符串转化为表达式:eval
#把字符串转化为表达式:eval
a="5+5"
print(eval(a))
4.2.5匿名函数:lambda
'''匿名函数''' #匿名函数指的是他是一个函数,但是这个函数的名称是可以自定义的:lambda。也就是相当于把函数写为一行了。
q=lambda a,w:a+w
print(q(5,6))
4.2.6过滤filter
'''过滤'''
list1=[x for x in range(10) if x>2] #列表推导式
print(list1)
obj=list(filter(lambda a:a>2,[x for x in range(10)]))
print(obj)
'''map'''
def func():
list1=[]
for item in range(10):
list1.append(item+10)
return list1
print(func())
obj=list(map(lambda a:a+10,[x for x in range(10)]))
print(obj)