python-函数

一、函数

  定义:函数是将一组语句的集合通过一个名字(函数名)封装起来,要执行这个函数,只需要调用函数名即可

  特性

   1.减少重读代码

   2.可扩展性

   3.使得程序变得易维护

1 def f():
2     if ......:
3 f()#调用函数
4 def sayHI(name,age):
5     print('hello:%s'%name,age)
6 sayHI('songxiaonan',22)

      函数的参数: 默认参数 所有的默认参数必须写在位置参数后面

            关键参数   指定参数名 进行赋值
     非固定参数 *args 以元组的形式传入数据
                          **kwargs        以字典的形式传入数据

def test(name,age,address,id,*args,**kwargs,salary=1):
    print('用户信息:%s,%s,%s,%s,%s'%(name,address,age,salary,id))
    print('加入的其他参数:',args)
    print('加入的其他参数:', kwargs)
test('song','xiao','nan',100,'book','1',book='追风筝的人',sel=200)
局部变量:只在函数内部生效
全局变量:一般定义在文件开头 局部变量和全部变量不冲突,如果重名,函数中想要修改全局变量,需要:global 变量名 变量名=值
name='songxiaonna'
def f():
    global name
    name='00000000'
    print(name)4
f()
print(name)
返回值 :1、一旦函数经过调用并开始执行,外部的程序就没有办法再控制函数的执行过程,此时只能等待函数的执行结果,外部程序要根据函数的执行结果来决定下一步怎
怎么走,所以,执行结果就是以return的形式返回给外部程序
2、return代表着一个函数的结束
3、返回值可以返回任意数据类型
4、对于用户角度,函数可以返回任意数量的值,但是对于python,函数只能返回一个值
二:递归函数
一个函数在内部调用自己,这个函数就是递归函数
def fun(n):
    print('haha---------haha',n+1)
    fun(n+1)
fun(0)

def calc(n):
    if n//2>0:
        calc(n//2)
    print(n)
calc(10)

  递归特性:

    1. 必须有一个明确的结束条件

    2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

    3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

三、匿名函数  lambda
  无参数 fun=lambda :true
带参数:fun=lambda x,y:x+y
name='songxiaonan'
def upper(data):
    Name=data.upper()
    return Name
for i in map(upper,name):#前年是函数名  注意:不用加上(),后面是被函数的对象
    print(i)
#以上的代码,可以用匿名函数:
name='songxiaonan'
map(lambda data:data.upper(),name)
for i in map(lambda data:data.upper(),name):
    print(i)

    
四、内置函数
a=abs(-9)#求绝对值
all(['1',0])#元组、列表、字符串等集合中均为true的时候返回true,为空时,返回true
any()#元组、列表、字符串等集合中一个元素为true返回true,为空时,返回false
cmp(1,2)#比较xy的大小,x>y返回1,相等返回0,x<y返回-1
map(function,iterable)#遍历每个元素,执行function操作,并返回一个列表
filter(function,iterable)#遍历每个元素,执行function操作,并返回该funtion返回真值时的所有项,过滤函数返回假值的所有项
chr(67)#返回序号67在ascii表中对应的字符
ord()#返回指定字符串对应的ascii码或者unicode值
print(ord('o'))
print(ord(u'a'))
a=bin(10)#将10转换为二进制字符
b=oct(10)#将10转换为八进制字符
c=hex(10)#将10转换为十六进制字符
bool(['x'])#将内容转换为布尔类型
bytearray()#返回一个byte数组
float(99)#将一个数或者字符串转换为浮点数,如果没有参数则返回0.0
int(2.9)#将数字或者字符串转换成一个整数   结果为2
callable(a)#测试对象是否可调用,可调用对象包括:函数、方法、代码对象、类、已经定义了调用方法的类
#print()
meg='灰太狼'
f=open('new','w',encoding='utf-8')
print(meg,'喜洋洋',sep='*',end='~',file=f)#输入结果:灰太狼*喜洋洋~ ,并将该输出写入到文件new中
complex()#把字符串或数字转换为复数。
getattr()
#delattr()#这个函数和setattr()有关。参数是一个对象和一个字符串。字符串必须是对象的某个属性的名字。只要对象允许,这个函数删除该名字对应的属性
# hasattr()
# dict()#创建字典
#list('song xiao')#将对象转换为列表['s', 'o', 'n', 'g', ' ', 'x', 'i', 'a', 'o']
#tuple('song xiao ')#将对象转换为元组,结果为('s', 'o', 'n', 'g', ' ', 'x', 'i', 'a', 'o', ' ')
# dir():以列表的方式返回对象所有的方法
# print(divmod(13,4))#完成除法运算,返回商和余(3,1)
#pow(2,4)#2的4次幂
#round(2.3)#四舍五入
# enumerate()打印序号
# eval()将字符串转为字典
# exec()执行字符串格式额代码
# float()
# format()字符串格式化
# frozenset()冻结集合,即将集合变成只读的
# print(globals())将当前程序在内存里的所有数据以字典的形式打印出来,只打印全局变量
# hash()
# isinstance(a,str)#测试对象类型,测试a是否是str
# issubclass()
# iter()
# print(locals())#只能放在函数里面,打印局部数
# max()求最大值
#min(1,22,3)#返回指定参数的最小值
# sum([1,2])#对列表求和
# memoryview
# next()
# object()
property
repr()
reversed()#反转
    data=[1,2,3,4]
    data2=reversed(data)
    for i in data2:
        print(i)#输出:4321
    str='abc'
    str2=reversed(str)
    for i in str2:print(i)#输出:cba
set()
setattr()
slice
sorted()
    name='song'
    print(sorted(name))
staticmethod
str('fcdv')#将对象转换成可打印的字符串
super()
vars()打印当前内存总所有地址
# zip()
a=[1,2,3,4]
b=['a','b','c','d','e']
for i in zip(a,b):
    print(i)
 #输出结果:  (1, 'a')
            # (2, 'b')
            # (3, 'c')
            # (4, 'd')


































原文地址:https://www.cnblogs.com/songxiaonan/p/6031851.html