函数

一、python函数

函数是可以重复使用的一段代码,将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可,增强代码的重用性和可读性

二、自定义Python函数

  def:表示函数的关键字

  函数名:函数的名称,根据函数名调用函数

  函数体:函数中进行一系列的逻辑计算

  参数:为函数体提供数据

  返回值:当函数执行完毕后,可以给调用者返回数据

def show(name):  #show:函数名,name:参数
    print(name)  #函数体
    return  #返回值

show('yoyo')  #调用函数
def func(a):
    a +=1
    return a  #返回a的值
result = func(4)
print(result)

三、参数

普通参数

def show(name):  #name是形式参数
    print(name)  

show('yoyo')   #yoyo是实际参数

默认参数

#默认参数,必须放在最后
def show(name, age=18):  #定义默认参数age
    print("%s:%s" % (name, age))

show('yoyo')  #使用默认参数
yoyo:18

关键字参数

def show(name, age):
    print("%s:%s" %(name, age))

show(name='yoyo', age=18)
yoyo:18

动态参数

def myfun(*params):   #参数转换成元组
    print("有%d个参数"% len(params))
    print("第二个参数是:", params[1])
    print(type(params))

myfun('h', 'e', 'l', 'l', 'o')

有5个参数
第二个参数是: e
<class 'tuple'>
def show(**arg):  #字典
    print(arg,type(arg))
show(n1=78,n2=23,n3=66)

{'n1': 78, 'n2': 23, 'n3': 66} <class 'dict'>
def show(*args,**kwargs):  #元组和字典
    print(args,type(args))
    print(kwargs,type(kwargs))

l = [11,22,33]
d = {'n1':88,'aa':'bb'}
show(*l,**d)
(
11, 22, 33) <class 'tuple'> {'n1': 88, 'aa': 'bb'} <class 'dict'>

 

函数内的变量为局部变量,外部无法访问函数内的局部变量
函数外部的为全局变量,函数内部可以访问,但无法修改全局变量
函数内使用global可以修改全局变量

x = 5
def fun(y):
    x = 4            #函数内无法修改全局变量
    return x * y

print(fun(4))
print(x)

16
5   #打印全局变量,结果没变
x = 5
def fun(y):
    global x   #使用global修改全局变量
    x = 4
    return x * y

print(fun(4))
print(x)

16
4     #修改了全局变量

内部函数对外部作用域的变量进行引用,这个内部函数为闭包

def funX(x):
  def funY(y):
    return x * y
  return funY

print(funX(8)(5))

40

内部函数修改外部函数局部变量的值,使用nonlocal

def funX(x):
    x = 8
    print(x)
    def funY(y):
        nonlocal x
        x = 6
        return x * y
    return funY

print(funX(8)(5))

 

四、内置函数

1.all()

a = all([1,2,3,4])  #都为真是真
print(a)

2.any()

a = any(["",[],{},1])  #有一个为真即为真
print(a)
#True

3.bin()

b = bin(10)  #返回二进制
print(b)

4.bytearray()

p = bytearray('你好',encoding='utf-8')  #转换成数组
print(p)
#bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd')

5.bytes()

p = bytes('你好',encoding='utf-8')  #转换成字符串
print(p)
#b'\xe4\xbd\xa0\xe5\xa5\xbd'

6.chr()

chr(99)  #数字转换ascii码

7.ord()

ord('a')  #数字转换ascii码

8.enumerate()

li = ['yoyo','alex','eirc']
for i,item in enumerate(li,1):print(i,item)
#1 yoyo
#2 alex
#3 eirc

9.eval()

eval("6*8")  #计算

10.map()

l = [11,22,33,44]
new_li = map(lambda x:x+100,l)
a = list(new_li)
print(a)
#[111, 122, 133, 144]

11.filter()

def func(x):
    if x>33:
        return True
    else:
        return False
n = filter(func,l)
q = list(n)
print(q)
#44
max(11,22,33) #取最大值
min(11,22,33) #取最小值
hex(100)  #16进制
oct(10)  #8进制
round(8.9)  #四舍五入
dir()  #取的是键
vars()  #取所有键值对

 五、lambda表达式

#普通方法
def func(arg):
    return arg + 1
result = func(123)

#lambda表达式
my_lambda = lambda arg : arg + 1
result = my_lambda(123)

 

posted @ 2016-06-27 18:01  yoyoua  阅读(169)  评论(0编辑  收藏  举报