Python之函数

来源:互联网 发布:2016年零售业数据 编辑:程序博客网 时间:2024/06/05 03:16

一 函数的基本语法

def 返回类型 func_name(<参数列表>):

      函数体

 

二 默认参数

#默认参数,表示如果调用者没有提供值,就使用默认提供的值
def show(arg1,arg2= 'default'):
    print(arg1,arg2)

show('hadoop') # hadoop default
show('hadoop','hive')# hadoop hive
三 动态参数
# *args =>
将传递进来的参数转换成了元组
# def show(*args):
#   print(args)

# **args =>
将传递进来的参数转换成了字典,这时候需要这样调用,参数个数没有限制
#
比如show1(key=12)就会把key作为字典key,12作为字典的value
def show1(**args):
    print(args)

show1(key1=12,key2=13,key3=23)

# 前面提供的数据封装成元组,后面的数据封装成字典
#
而且写参数和传参数 *args参数需要放在前面,**kwargs需要放在后面
def display(*args,**kwargs):
    print(args,type(args))
    print(kwargs,type(kwargs))

display(11,12,14,key1='nicky',key2='Lucy')

 

#如果我们传递的是一个列表个一个字典,动态参数会发生如何变化
l = [11,12,14]
d = {'key1':'nicky','key2':'Lucy'}
display(l,d)
"""
运行结果如下:
([11, 12, 14], {'key1': 'nicky', 'key2': 'Lucy'}) <class 'tuple'>
{} <class 'dict'>
我们发现他把List和字典封装成了元组,类似这样(List,Dict),而并不是把List的数据封装成元组
Dict
数据封装成字典,所以kwargs参数为空
"""

# 如果我们希望把传递进来的列表转化成元组,字典转化为字典,我么可以这样:
display(*l,**d);
"""
运行结果如下:
(11, 12, 14) <class 'tuple'>
{'key1': 'nicky', 'key2': 'Lucy'} <class 'dict'>
"""

# 字符串的格式化函数就是这种的
target = "{0} is{1}"
# message =target.format("nicky","developer")
lists = ['BaoBao','UI']
# message =target.format(lists) 报错IndexError: tuple index out of range
#
正确方式
message = target.format(*lists)

target = "{name} is {age}"
message = target.format(name='nicky',age=28)

# d ={'name':'nicky','age':28}
# message = target.format(**d)
print
(
message)

 

 

四 lambda表达式

# lambda表达式,简单函数的表达式,最后将结果返回func = lambda a,b: a+b;ret = func(10,20)print(ret)

 

 

 

五 内置函数

Python提供的不需要导入任何模块就能调用的函数。

abs:求绝对值

all(): 传给all的元素必须全部为true,结果才是true

any(): 传给any的元素只要有一个是真,那么返回结果就是真

bool(): 计算布尔值

bytes():计算字节数

bytearray(): 转换成字节数组

dir():

id(): 查看内存地址

divmod(): 取余

callable(函数名): 可够被调用

chr(): 转成字符

ord(): 转换成ascii码

dir():

enumerate()

filter(f,list):

map(f,list):

frozenset(): 不能增加修改的集合

globals(): 所有可用变量

max:返回最大值

len: 求长度

hash(): 计算散列值

input(): 用户输入

open(): 打开文件

pow()求冥

range(i) : 拿到0到i的区间

print(): 打印

reversed(): 反转

round(): 四舍五入

sum求和

zip(list1,list2):

举几个例子:

users = ["hadoop","hive","spark"]for i in range(len(users)):    print(users[i])# 可以为序列加上序号for index,item in enumerate(users,10):    print(index,item)# map,你可以把lambda表达式视为一个函数nums = [11,22,33,44]newList = map(lambda a:a*2,nums)elements = list(newList)for i in range(len(elements)):    print(elements[i])# filter,你可以把lambda表达式视为一个函数numberList = [11,22,33,44]result = filter(lambda a:a % 2 == 0,numberList)elements = list(result)for i in range(len(elements)):    print(elements[i])# zipx = [1,2,3]y = [7,8,9]zipped = zip(x,y)newList = list(zipped)for x in range(len(newList)):    print(newList[x])

 

结果是[(1,7),(2,8),(3,9)]

 

六 操作文件的函数open

作业: