python-内置函数

内置:python自带
def func():
    a = 1
    b = 2
    print(locals())
    print(globals())

func()
生成器函数range
range(100)#[0,100)
range(5,100)#[5,100)
range(1,100,2)#2为步长
range(100).__iter__()
iterator=iter(range(100)) #拿到一个迭代器
print(iterator.__next__())
print(next(iterator))
for i in range(100):
print(i)
# def itre():
# return range(100).__iter__()
 
查看内置属性:dir
print(dir([]))
调用相关的(可以调用):callable
def func():pass
print(callable(a))    #不可以调用
print(callable(print))    #可以调用
print(callable(func)) #可以调用
帮助:help
ctrl +左键点击:pycharm
help
dir
模块:import 模块
文件操作
f = open()
打开模式:r,w,a,rb,wb,ab
编码 utf-8,gbk

哈希(是一种算法)hash,返回的是一串数字
应用:数据的存储和查找,

模块:hashlib
print(id(1))
print(hash())
hash([1,2,2])
hash判断一个数据类型是否可以hash
在一个程序执行的过程中,对同一个值得hash结果总是不变
多次执行,对同一个值得hash结果可能改变
输入输出input  print
s = input('提示:')

print(1,2,3,4,sep='*')    #sep是指定多个要打印的内容之间的分隔符
print(1,2,sep=',')    #print ('%s,%s'%(1,2))
print('abc\n')
print(1,end='\n')
print(2)
f = open('a','w')
print('abc', file=f)
print('123\n', file=f)
print(555)
字符串类型代码的执行:eval,exec,compile
exec用于流程性代码的执行,exec没有返回值
eval用于值计算的时候,有返回值,eval 可以以python代码的形式执行一个字符串,
exec("print('123')")    #exec用于流程性代码的执行
eval("print('123')")    #eval 可以以python代码的形式执行一个字符串,
print(exec('1+2+3-4'))  #exec没有返回值
print(eval('1+2+3-4'))     #eval用于值计算的时候,有返回值

code1= 'for i in range(0,10):print(i)'
compilel = compile(code1,'','exec')
exec(compilel)

简单求值表达式用eval
code2 = '1+2+3+4'
compile2 = compile(code2,'','eval')
print(eval(compile2))
商余divmod
ret = divmod(10,2)
print(ret)
ret = divmod(3,2)
print(ret)
保留几位小数
print(round(3.1415926,2))
幂运算
print(pow(2,3))
print(pow(2,3,3))   #2的3次方,除以3取余数 x**y%z
求和sum,sum接收一个可迭代对象
print(sum([1+2+3+4+5+6],-2))    #逗号左边的加上逗号右边的
print(sum([1+2+3]))
min最小值
print(min([1,2,3,0]))
print(min([],default=0))    #元素为空时,会有报错,default设置一个默认值,如果没有元素就会返回default设置的默认值,这样就不会有报错了
max求最大值
s = (-25,1,3,6,8)
print(max(s))
print(max(s,key=abs))
print(max((),default=100))
返回值不同,reversed返回的是迭代器,不改变原来的列表的情况下生成一个新的序列的迭代器
rever返回值为None,是在原来的列表的基础上修改的
l = [2,3,5,0.1]
ret = reversed(l)
print(ret)
print(list(ret)) #强转成列表
#next
# for
l.reverse()
print(l)
print(l.reverse())  #返回值为None
slice
l = [2,3,5,0.1]
sl = slice(1,5,2)       #实现了切片的函数,
# print(l[sl])  #l[1,5,2]语法糖
print(sl)

 

formate的另类用法,但下面方法用的不多
print(format('test','<20'))     #这里<是左对齐,20表示总字符是20,左对齐
print(format('test','>20'))     #>表示右对齐
print(format('test','^20'))     #^表示居中
网络编程的时候:能在网络上传递的必须是字节
ret = bytes('你好',encoding='utf-8')
# # 中间是网络传输的过程
print(ret.decode(encoding='utf-8'))
对比较长的字符串做修改的时候,指定某一处进行修改,不会改变这个bytearry的内存地址
ret = bytearray('alex',encoding='utf-8')
print(id(ret))
print(ret[0])
ret[0] = 65
print(ret)
print(id(ret))

 

 repr
print(repr(1))
print(repr('1'))
print(repr([1,2]))
print('name:%s'%('金老板'))
print('name:%r'%('金老板'))
enumerate枚举
l = ['1','2','3','4']
for i in enumerate(l):
    print(i)

 

all,any
一个为假就为假
print(all([1,2,3,4,0]))
print(all([1,2,3,4]))
print(all([1,2,3,4,None]))
print(all([1,2,3,4,'']))
一个为真就为真
print(any([True,False]))

拉链函数zip
print(list(zip((1,2,3),(4,5,6),('a','b'))))
筛选函数
就是有一个可迭代对象,想要一个新的内容集,是从原来可迭代对象中筛选出来的
新内容少于等于原内容的时候,才能用到filter.
filter和map
参数很相近,都是一个函数名+可迭代对象
且返回值也很相近,都是返回可迭代对象
区别:
filter是做筛选的,结果还是原来就在可迭代对象中的项
map是对可迭代对象中的每一项做操作的,结果不一定是原来就在可迭代对象中的项
filter和map
def func(x):
    return x and x.strip()

l = ['test',None,'','str',' ','END']
ret = filter(func,l)
print(list(ret))

def is_odd(x):
    if x>10:
        return True
ret = filter(is_odd,[1,4,6,7,9,12,17])
print(list(ret))
def is_odd(x):
    if x%2 == 0:
        return True
ret = filter(is_odd,[1,4,6,7,9,12,17])
print(list[ret])

新内容的个数等于原内容的个数
L = [1,2,3,4,5,6,7,8]
def a(x):
    return x*x
ret = map(a, L)
print(list(ret))

ret = map(abs,[-1,-3,5,-7])
print(list(ret))

 

 

 

 

 
 

 
 
 

 

 

 

 

 

进度条
import time
for i in range(0,101,2):
     time.sleep(0.1)
     char_num = i//2      #打印多少个'*'
     per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
     #/r表示把光标返回到初始位置
     print(per_str,end='', flush=True)

 

 
 
 

 

 
 
 
posted @ 2017-11-11 11:47  dwenwen  阅读(191)  评论(0编辑  收藏  举报