D3_函数

一、定义和使用
使用def关键字定义函数,函数名后的括号用于接收参数,如:

def mail():
    pass

程序执行到定义函数时不执行函数,只将函数放入内存中,执行到该函数调用时从内存中获取该函数执行。

二、返回值:可用于判断函数执行的结果,使用return关键字返回

'''该函数用于发送邮件,若发送成功返回0,若失败(即try代码块出错)则返回-1,可使用变量接受返回值'''
def mail():
    try:
        '''sending mail'''
    except Exception:
        return -1
    return 0
result = mail()
if result == 0:
    '''succeed'''
elif result == -1:
    '''Failed'''

'''若没有return关键字,默认返回"None"'''
'''函数的执行在到达return后结束,不再继续执行'''

三、参数:函数执行时需要传入的变量
(1)普通参数:执行时需要指定参数。定义函数时使用的参数为形参,调用函数时传入的参数为实参。

def mail(send_to):      #"send_to"变量为形参
    '''sending mail to "send_to"'''     #函数体,发送邮件给"send_to"变量指定的参数

user = "abc@host.com"
mail(user)          #执行函数,"user"变量为传入的实参

(2)默认参数:定义函数时指定参数的默认值,若调用时不指定参数则传入默认参数。默认参数必须在最后要传入的参数中指定。

def mail(send_to = "abc@host.com")
    '''sending mail to "send_to"'''
mail("def@host.com")    #调用时传入指定参数
mail()                  #调用时未指定参数,传入默认参数"abc@host.com"

(3)指定参数:调用函数时使用形参名指定传入的参数,可不按照定义形参顺序传入参数。

def mail(send_from,send_to):
    '''sending mail from "send_from"'''
    '''sending mail to "send_to"'''
mail(send_to = "def@host.com",send_from = "abc@host.com")   #调用时使用形参名指定参数的传入顺序

(4)动态参数

'''定义函数时使用“*”定义形参可自动转换参数类型,默认转换为元组'''
def func_1(*arg):
    print(type(arg))
    print(arg)
func_1('abc')
'''console:
<class 'tuple'>
('abc',)
'''

'''若使用“**”定义参数,则将传入参数转换为字典,调用时需要使用“key=value”形式传入'''
def func_2(**kwarg):
    print(type(kwarg))
    print(kwarg)
func_2(k1='v1',k2='v2',k3='v3')
'''console:
<class 'dict'>
{'k2': 'v2', 'k1': 'v1', 'k3': 'v3'}
'''

'''若分别使用两个动态参数,则可识别元组和字典并自动转换'''
def func_3(*args,**kwargs):
    print(type(args),args)
    print(type(kwargs),kwargs)
func_3('abc',k1='v1',k2='v2')
'''console:
<class 'tuple'> ('abc',)
<class 'dict'> {'k1': 'v1', 'k2': 'v2'}
'''

'''若传入可递归变量,会将args赋值为携带类型的整个变量,使用参数传入可递归变量时需要使用“*”'''
def func_4(*arg):
    print(arg)
list_1 = ['a','b','c']
func_4(list_1)
func_4(*list_1)
'''console:
(['a', 'b', 'c'],)
('a', 'b', 'c')
'''

四、lambda表达式:简单函数的表示方式

'''函数名 = lambda 形参:函数体(只能是一行且自动返回执行结果)'''
func_5 = lambda a:a+1
print(func_5(1))
'''console:
2
'''

五、内置函数:无需导入模块即可使用的函数

'''all(*args,**kwargs):传入序列(列表、元组、字典),若传入序列的所有值都为True,则返回值为True。None、空字符串、空列表、空元组、空字典为False'''
list_1 = [1,2,3]
print(all(list_1))
'''console:True'''

'''any(*args,**kwargs):传入序列,只要值有True就返回True'''
list_2 = [0.1]
print(any(list_2))
'''console:True'''

'''bin(*args,**kwargs):返回传入参数的二进制表示'''
print(bin(10))
'''console:0b1010'''

'''bytearray(object):传入序列,转换为字节数组,若传入字符串需指定encoding'''
str_1 = 'abc'
print(bytearray(str_1,encoding='utf-8'))
'''console:bytearray(b'abc')'''

'''callable(i_e_,some_kind_of_function):判断传入的参数是否可以被调用'''
def func():
    pass
print(callable(func))
'''console:True'''

'''chr(*args,**kwargs):将传入的数字作为ascii码转换为字符'''
print(chr(97))
'''console:a'''

'''ord(*args,**kwargs):将传入的字符转换为ascii码'''
print(ord('A'))
'''console:65'''

'''enumerate(object):获得序列的索引值和序列值组合,可使用第二个参数指定索引初始值,默认为0'''
ist_1 = ['a','b','c','d']
for k,v in enumerate(list_1,1):
    print(k,v)
'''console:
1 a
2 b
3 c
4 d
'''

'''eval(*args,**kwargs):若传入的字符串为表达式可返回运算结果'''
str_1 = '10+5'
print(eval(str_1))
'''console:15'''

'''filter(object):用于条件筛选,第一个参数为一个返回bool值的参数,第二个参数为要处理的序列,返回函数结果为True的值可遍历或转换结果'''
list_1 = [1,2,3,4,5,6,7]
def judge(arg):
    return arg>5
for i in filter(judge,list_1):
    print(i,end=' ')
'''consols:6 7'''

'''map(object):用于对每个元素进行处理,第一个参数为一个函数,第二个参数为要处理的序列,返回值可遍历或直接转换'''
list_1 = [1,2,3,4,5]
new_list = list(map(lambda arg:arg+1,list_1))
print(new_list)
'''console:
[2, 3, 4, 5, 6]
'''

'''frozenset(object):声明不能修改的集合'''
set_1 = frozenset('abc')
print(set_1)
'''
console:frozenset({'b', 'c', 'a'})
'''

'''globals(*args,**kwargs):返回当前所有可用的全局变量'''
'''locals(*args,**kwargs):返回当前所有可用的局部变量'''

'''hex(*args,**kwargs):返回当前传入参数的16进制形式'''
print(hex(10))
'''console:0xa'''
'''oct(*args,**kwargs):返回当前传入参数的8进制形式'''
print(oct(10))
'''console:0o12'''

'''max(*args,key=None):返回传入序列的最大值'''
print(max([1,3,7,2,5]))
'''console:7'''
'''min(*args,key-None):返回传入序列的最小值'''
print(max([1,3,7,2,5]))
'''console:1'''

'''open(file,mode='r',buffering'None,encoding'None,errors=None,newline=None,closefd=True):打开文件'''

'''round(number,ndigits=None):返回传入参数的四舍五入值'''
print(round(4.8),round(4.4))
'''console:5,4'''

'''zip(object):传入两个列表,返回列表内对应结组的列表'''
list_1 = ['k1','k2','k3']
list_2 = ['v1','v2','v3']
for ret in zip(list_1,list_2):
    print(ret)
'''console:
('k1', 'v1')
('k2', 'v2')
('k3', 'v3')
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值