第7天 函数 及内置函数

函数

参数传递:

普通参数  

默认参数

动态参数:

*   转换为元祖

** 转换为字典 ,  必须放最后

*+**  无敌

 

def show (*a,**b):

      pass

 

show(11,22,33,44,lj=33,qyj=44)

 

#如果想传递某个变量,可以采用如下形式

   num=[11,22,,33,44]

   name={‘lj’=33,'qyj'=44}

   show(*num,**name)

 

字符串格式化应用更改

si="{0} is {1}

result=s1.format(“lj”,2b)

print(result)

 

# 或者更改一下

l=[“lj”,2b]

result=s1.format(*l)

#或者再更改一下

l={“lj”:2b,}

result=s1.format(**l)

 

lambda 表达式

func=lambda a: a+1

      关键字     形式参数:    函数内部代码,只能一行,自动return

 

内置函数:

abs()   绝对值

all()   所有序列参数全为真 ,返回真         假:0  none    ""     []   {}   ()      空为假

any()   有真为真

ascii()   

bin()     转为二进制

bool()   

bytearray()     转换为 字节数组    bytearray("liujun",encode="utf-8")

bytes()    转为字节字符串     bytes("liujun",encode="utf-8")

callable()     判断是否可执行可调用     ,其实是判断内部是否有 __call__方法

chr()      数字转ascii码;对应ord()   字符ascii码转数字

calssmethod() 

compile()    编译

complex()   复数

delattr()    反射      get attr       help attr     set attr    共四类

dict() 

dir()     显示变量所有的KEY内部方法

divmod()   取商和余数组成元祖返回

enumerate()  对序列输出增加索引

for  iindex ,text  in  enumerate(list,1):         #  增加了index   , 参数1表示 从1开始计数

     print(index,text)

eval()  将字符串转换成Python表达式,并返回结果

filter()    过滤器,  按条件筛选  ,返回满足条件数据  ,不满足删除

#   map(lambda x:x+100 ,   list )  按第一个参数 循环处理第二个参数  

float()

format()  

 frozenset()   不能修改的set集合

getattr()

globals() 打印所有全局变量

hasattr()

hash()  

help()

hex()   16进制

id

input

int

ininstance

issubclass

iter

len

list

locals

map

max

memoryview

min

next

oject

oct()    8进制

open

ord

pow

print

prorerty

range

repr        调用  repr方法,返回字符串

reversed     反转

round     四舍五入

set

setattr

slice      切片

sorted    排序

staticmethod

str

sum

super

tuple

type

vars    返回 内部所有函数字典

zip   合并俩个列表

__import__

 

 

 

python内置函数

1.数学相关

  • abs(x) 取x绝对值
  • divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组
  • pow(x,y[,z]) 取x的y次方 ,等同于x ** y,如果给出z值,该函数就计算x的y次幂值被z取模的值
  • round(x,[,n]) 四舍五入取x的值,n表示取小数点几位
  • min(X) 取X中最小的值
  • max(X) 取X中最大值
>>> abs(-10)     #取-10的绝对值
10
>>> abs(10)
10
>>> divmod(10,3)   #取10除以3的余数和商
(3, 1)                  #返回结果为元组
>>> pow(2,3)            #取2的3次方
8
>>> pow(2,10)
1024
>>> round(4.5)     #取4.5的四舍五入值
4
>>> round(4.6)
5
>>> round(4.6454545,4)   #取4.6454545四舍五入值,保留小数点后四位
4.6455
>>> li = [1,3,4,5,4,5,6]
>>> dic = {"a":1,"b":2,"c":3}
>>> min(li)   #取li列表元素最小值
1
>>> min(dic)    #取dic字典中value最小的key
‘a‘
>>> max(li)    #取li列表元素最大值
6
>>> max(dic)    #取dic字典中value最大的key
‘c‘

2.序列相关

  • range(x,y[,z]) 取x到y-1以内所有整数的列表,z为步长,返回的是一个实例
  • len(x) 返回x字符串或序列的长度 py3里默认计算的字符数量, py2里是计算的字节数量
  • xrange(x,y[,z])和range()类似,但是返回的是一个对象

3.内置类型转换函数

  • chr(x) 将ascii码表中的数字x转换为对应的字符
  • ord(x) 将ascii码表中的字符转换为对应的数字
  • str(x) 将x转换为字符类型
  • int(x) 将x转换为整型
  • float(x) 把一个数字或字符串转换成浮点数
  • hex(x) 把十进制x转换为十六进制
  • bin(x) 把十进制x转换为二进制
  • oct(x) 把十进制x转换为八进制
  • dict(x) 将x转换为字典,元素需要有字典的相关属性
  • list(x) 将x转换为列表 ,元素需要有列表的相关属性
  • tuple(x) 将x转换为元组,元素需要有元组的相关属性
  • set(x) 将x转换为集合,元素需要有集合的相关属性
  • bytes(x) 将x转换为二进制字节码
import random

#方法一
def suiji(args):
    rs = ""  #定义一个空字符串变量
    for i in range(args):
        r = random.randrange(0,args-1)  #产生随机数
        if r == 2 or i ==4:           #判断随机数,用于生成随机验证码中的数字
            temp = random.randrange(48,58)     #随机生成ascii码表中数字字符对应的数字
        elif r == 1 or r == 3:
            temp = random.randrange(97, 122)   #随机生成aascii表中小写字母对应的数字
        else:
            temp = random.randrange(65,91)  #随机生成aascii表中大写字母对应的数字

        li = chr(temp)    #使用chr 转换
        rs += li
    return rs
#方法二
def suiji1(args):
    rs = []
    for i in range(args):
        r = random.randrange(0,args-1)
        if r == 2 or i ==4:
            temp = random.randrange(48,58)
        elif r == 1 or r == 3:
            temp = random.randrange(97, 122)
        else:
            temp = random.randrange(65,91)
        li = chr(temp)
        rs.append(li)

    return "".join(rs)

d = suiji(6)
f = suiji1(6)
print(d)
print(f)

4.序列处理函数

  • filter(x,y) x为条件函数,y为可迭代的对象 循环可迭代的对象,让每个循环元素执行函数,如果返回True,则说明元素合法
  • map(x,y) x为条件函数,y为可迭代的对象,循环可迭代的对象,让每个循环元素执行函数,返回执行结果
  • sorted(x) 对x进行排序
  • reversed(x) 反转x的排序
  • enumerate() 一般用于便利序列的索引和元素
#需求 取出li列表中的大于5的值
li = [1,3,4,4,5,6,5,7,8,9,234,7,8,89,]

#使用自定义函数实现
def panduan1(args):
    ret = []
    for i in args:
        if i > 5:
            ret.append(i)
    return ret

print(panduan1(li))

#使用filter函数实现
def panduan(args):
    if args > 5:
        return True


ret = filter(panduan,li)    #filter只判断li当前循环的元素在panduan函数中返回的值,True的话就取出,False的话略过

print(list(ret))

#使用filter加lambda表达式来实现

ret = filter(lambda a: a > 5 , li )
print(list(ret))

#新需求,将li列表中大于5的元素取出并加2
ret  = map(lambda a: a+ 2,li)    #map判断li当前循环的元素死否符合函数判断,如果符合将返回当前元素,否则略过
print(list(ret))

5.对象及类型

  • callable(object) 用于测试对象是否可调用,如果可以则返回1(真);否则返回0(假)。可调用对象包括函数、方法、代码对象、类和已经定义了 调用 方法的类实例
  • isinstance() 判断对象是否是某个类的实例

6.逻辑判断

  • all(iterable) 集合中的元素都为真的时候为真;若为空串返回为True
  • any(iterable) 集合中的元素有一个为真的时候为真;若为空串返回为False
  • cmp(x, y) 如果x < y ,返回负数;x == y, 返回0;x > y,返回正数
>>> li = [1,3,4,5]   #li中元素都为真
>>> all(li)         #只要全部为真时才为真
True
>>> any(li)      #任意元素为真时 为真
True
>>> li = [1,3,4,5,""]   #li中存在空元素
>>> all(li)     
>>> 
False
>>> any(li)
True

>>> cmp(1,2)    #1<2 结果返回-1
-1
>>> cmp(4,2)        #4>2  结果返回1
1
>>> cmp(4,4)     #4=4 结果返回0
0

7.其他

  • compile() 把字符串编译为python代码,模式:single,eval,exec,
  • exec()执行代码或编译后的字符串,无返回值 ,
  • eval() 将字符串中表达式转换为python表达式,有返回值
  • dir() 快速一个对象提供的功能
  • help()查看详细帮助信息
  • id() 查看内存地址
  • globals() 打印所有全局变量
  • locals()打印所有局部变量
  • vars() 返回对象的变量及值
  • zip() 将两个序列中相同索引的元素按元组组合到一起形成一个列表,如果其中一个序列的索引不存在,将忽略
>>> s = "print(123)"
>>> t = compile(s,‘<string>‘,‘exec‘)
>>> exec(t)
123
>>> s = "8+8"
>>> t1 = compile(s,‘<string>‘,‘exec‘)
>>> t2 = compile(s,‘<string>‘,‘eval‘)
>>> exec(t1)
>>> a = exec(t1)
  File "<stdin>", line 1
    a = exec(t1)
           ^
SyntaxError: invalid syntax
>>> exec(t2)   #exec 将执行compile编译后的代码,无返回值 
>>> eval(t2)    #exec 将执行compile编译后的代码,如果代码中有表达式,将按表达式执行,有返回值 
16

>>> a = [1,3,4,5,3,4]
>>> b = [1,3,6,74]
>>> zip(a,b)
[(1, 1), (3, 3), (4, 6), (5, 74)]
posted on 2017-09-06 11:56  风云小析  阅读(156)  评论(0编辑  收藏  举报