内置函数
发布日期:2022-03-12 04:49:28 浏览次数:36 分类:技术文章

本文共 9256 字,大约阅读时间需要 30 分钟。

内置函数:input()用户交互                  len ()可迭代对象的长度。sum()求和                          open()打开文件print()打印结果                   id()查看内存地址。forzenset()冻结。               int()range()自定制一个数字范围列表。str()          dict()        enumerate()dir()查看对象所有的方法     list()type()查看类型                       globals()将全局所有的变量放在一个字典中。locals()当前位置的局部变量    bool()tuple()                                      set()next()                                       isinstance()iter()
1.1作用域相关:***globals()以字典的形式返回全部全局变量。***locals()以字典的形式返回当前位置的全部局部变量
q = 666def wrapper(args):    a = 3    print(locals())   #1{a:3,argv:2}    def inner (argv1):        b = 4        c = 5        print(locals())  #2{b:4 c:5,argv1:6}    inner(6)wrapper(2)print(globals())       #3a = 1b = 2print(locals())print(globals())
View Code
a = 1b = 2print(locals())print(globals())# 这两个一样,因为是在全局执行的。
View Code
a = 333b = 222def func1():    a1 = 2    b1 = 3    # print(globals())    def func2():        c = 666        print('*****',locals())    func2()    print(locals())func1()# print(locals())# print(globals())
View Code
1.2其他相关:1.2.1字符串类型代码的执行eval,exec,complie***eval 执行字符串类型的代码,并返回最终结果
s = '{"a":1,"b":3}'dic = eval(s)print(dic,type(dic))#{'a': 1, 'b': 3}print(eval('2+2'))   #4print(eval('print(666)'))  # 666 Noneprint('1 + 3')   # 1+3print(eval('1+3'))   # 4print(eval('3 * 3'))   # 9dic = eval("{'name': 'alex'}")print(dic,type(dic))  #{'name': 'alex'} 
View Code

***exec:执行字符串类型的代码

print(exec('1+1'))  #-7914447530519101743ret = '''name = input('请输入名字:').strip()if name == 'alex':    print(666)'''exec(ret)print(exec(ret))code = '''for i in range(1, 11):    print(i)'''exec(code)   # 1 2 3 4 5 6 7 8 9 10
View Code

compile:将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。

有返回值的字符串形式的代码用eval,没有返回值的字符串形式的代码用exec,一般不用compile。

1.2.2输入输出相关:input print

input:函数接受一个标准输入数据,返回为string类型。
print:打印输出

name = input('请%s输入名字:'%'alex')print(name)print(1,2,3,sep'|')print(1,2,3,sep='*')   #sep设定每个元素的链接方式print('alex')print('老男孩')print('alex',end='')#end控制的是换行   end='\n' 换行print('老男孩')
View Code
1.2.3内存相关:**hash:获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。** id:用于获取对象的内存地址。
print(hash('name'))print(hash('age'))   #-3222027233094400776print(hash(1,2,3,))print(hash(1))print(id('name'))   #1502096
View Code
1.2.4文件操作相关:***open:函数用于打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。
f1 = open('log',encoding='utf-8',mode='w')print('666',file=f1)  # file 操作文件句柄,写入文件f1.close()f1 = open('log', encoding='utf-8', mode='w')print('随便写的内容',file=f1)f1.close()
View Code
1.2.5模块相关:__import__:函数用于动态加载类和函数。1.2.6帮助:*help:函数用于查看函数或模块用途的详细说明。print(help(str))
1.2.7调用相关:**callable:函数用于检查一个对象是否是可调用的。如果返回Ture,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
def func1():    print(666)print(callable(func1))     ##Trueage = 16print(callable('name'))  #Falseprint(callable(age))    #False
View Code
1.2.8查看内置属性:dir:函数不带参数时,返回当前范围内的变量,方法和定义的类型列表:带参数时,返回参数的属性,方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__,该方法将最大限度的收集参数信息。print(dir(str))   查看内部含什么方法
1.3迭代器生成器相关:***range:函数可创建一个整数对象,一般用在 for 循环中。   iter():函数用来生成迭代器(讲一个可迭代对象,生成迭代器)。   next():内部实际使用了__next__方法,返回迭代器的下一个项目。
print(len(range(100)))  #100l= [1,2,3,4,5]l_obj = l.__iter__()l_obj = iter(l)print(l_obj)   #
print(l_obj.__next__()) #1print(next(l_obj)) #2
View Code
1.4基础数据类型相关:1.4.1数字相关(14):数据类型(4):bool:用于将给定参数转换为布尔类型,如果没有参数,if 返回False:int:函数用于将一个字符串 或数字转换为整型。
print(int('123'))   #123print(int(1.234))#  1print(int(1.768))   #1
View Code
float:函数用于将整数和字符串转换成浮点数。
i = 3.1415print(i,type(i))s = '1.234'print(int(1.234))print(float(s))
View Code
complex:函数用于创建一个值为real+imag*j的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。compilex(1,2)(1 + 2j)进制转换(3):bin:将十进制转化成二进制并返回。print(bin(100))oct;将十进制转化成八进制字符串并返回。print(oct(10))hex:将十进制转化成十六进制字符串并返回。print(hex(13))数学运算:(7)***abs:函数返回数字的绝对值。print(abs(-5))  #5***divmod:计算除数与被除数的结果,返回一个包含商和余数的元组(a//b , a % b)print(divmod(7,3))    #(2, 1)***round:保留浮点数的小数位数,默认保留整数。print(round(1.234,2))#1.23(保留两位小数)***pow:求x**y次幂。(三个参数为x**y的结果对z取余)print(pow(2,3))  #2的三次幂      # 8print(pow(2,3,3)) #2的三次幂对3取余数     #2***sum:对可迭代对象进行求和计算(可设置初始值)print(sum([1,2,3,4]))      #10print(sum([1,2,3,4],100))     #110         #(10 初始值)***min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值)print(min([1,2,3,5,7,-4]))     #  4print(min([1,2,3,4,-4],key=abs))    #-1***max:返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值)print(max([1,3,5,7,-4]))    #7print(max([1,3,5,7,-9],key=abs))    #-9
l1 = [[1,3],[4,2],[5,8],[9,3]]def func(x):    return x[1]print(max(l1,key=func))l2 = [[1517991992.94, 100], [1517992000.94, 200], [1517992014.94, 300]]def func(x): return x[1]print(max(l2,key=func))
按照索引取最大值
dic = {
'a':1,'b':44,'c':34}def func(x): return dic[x]print(dic[max(dic,key=func)])
字典的值排序
dic = {
'a':3,'b':2,'c':1}def func(x): return dic[x]print(max(dic,key=func))
字典取最大值
1.4.2和数据结构相关(24):列表和元组(2):list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素)。
l1 = list({
'name':'alex','age':100})tu = (1,2,3)print(list(1,2,3))
View Code
tuple:将一个可迭代对象转化成元组(如果是字典,默认将key作为元组的元素)。相关内置函数(2):***reversed:将一个序列翻转,并返回此翻转序列的迭代器。
l1 = [11,22,33,44,77,66]l_obj = reversed(11)# print(l_obj)     #
for i in l_obj: print(i) #66 77 44 33 22 11
View Code
slice:构造一个切片,用于列表的切片。
l1 = [2,3,5,7,8]l2 = [3,6,8,2,56]rule = slice(0,3)print(l1[rule])print(l2[rule])
View Code
l1 = [11,22,33,44,77,66]print(l1[1::2])l2 = [111,222,333,444,777,666]rule = slice(1,len(l2),2)print(l2[rule])
View Code
字符串相关(9):str:将数据转化成字符串。format:与具体数据相关,用于计算各种小数,精算等。
print(format('test','<20'))#左对齐print(format('test','>20'))#右对齐print(format('test','^20'))#居中
View Code
***bytes:用于不同编码之间的转化。
bytes:str--->bytess1 = 'alex'b1 = s1.encode('utf-8')print(b1)    #b'alex'print(b2)   #b'alex'
View Code
bytearry:返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围:0<=x<256.
ret = bytearray('alex',encoding='utf-8')print(id(ret))print(ret)print([0])ret[0] = 65print(ret)print(id(ret))
View Code
memoryview:
b1 = bytes('你好',encoding='utf-8')print(b1)ret = memoryview(b1)print(len(ret))print(ret)print(bytes(ret[:3]).decode('utf-8'))print(bytes(ret[3:]).decode('utf-8'))
View Code
ord:输入字符串找改字符编码的位置
print(ord('a'))print(ord('中'))  #unicode
View Code
chr:输入位置数字找出其对应的字符
print(chr(65))print(chr(20013))   #unicode
View Code
asscii:是ascii码中的返回该值,不是就返回/u。
print(asscii('a'))print(asscii('1'))print(asscii('中'))
View Code
***repr:返回一个对象的string形式(原形毕露)
msg = '小数%f'%(1.234)print(msg)   #小数1.234000msg = '姓名:%r'%('alex')print(msg)   #姓名:'alex'
View Code
数据集合(3):dict:创建一个字典。set:创建一个集合。frozenset:返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。相关内置函数(8):***len:返回一个对象中元素的个数。***sorted:对所有可迭代的对象进行排序操作。返回的是列表
print(sorted([1,2,3,4,5,-6]))   #[-6, 1, 2, 3, 4, 5]print(sorted([1,2,3,4,5,-6],key=abs))   #[1, 2, 3, 4, 5, -6]
View Code
l = [('a',1),('c',3),('d',4),('b',2),]print(sorted(l))    #[('a', 1), ('b', 3), ('c', 2), ('d', 4)]def func1(x):    return x[1]l = [('a',1),('c',2),('d',4),('b',3),]print(sorted(l,key=func1))     #[('a', 1), ('c', 2), ('b', 3), ('d', 4)]
View Code
enumerate:枚举,返回一个枚举对象。
print(enumerate([1,2,3]))for i in enumerate([1,2,3]):    print(i)for i in enumerate([1,2,3],100):    print(i)
View Code
*all:可迭代对象中。全部都是Ture才是Ture*any:可迭代对象中。有一个Ture就是Ture
print(all([1,'alex',True,(1,2,3)]))   #Trueprint(all([0,'',True,(1,2,3)]))    #Falseprint(any([0,'alex',False,(1,2,3)]))  ##Trueprint(any([0,'',False,()]))   #False
View Code
***zip:拉链方法  返回的是一个迭代器(函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。)
l1 = [1,2,3,4]tu1 = ('老男孩','alex','wusir')l2 = ['*','**','***','****']obj=zip(l1,tu1,l2)for i in obj:    print(i)###(1, '老男孩', '*')      (2, 'alex', '**')      (3, 'wusir', '***')
View Code
***map:循环模式,返回的是迭代器  可加key(key,可迭代对象)
def func2(x):    return x**2obj = map(func2,[1,2,3,4])for i in obj:    print(i)   #1  4  9  16print([i**2 for i in [1,2,3,4]])     #[1, 4, 9, 16]
View Code
提供了两个列表,对相同位置的列表数据进行相加
def func2(x,y):    return x + yobj1 = map(func2,[1,2,3,4,6],(2,3,4,5))for i in obj1:    print(i)    # 3  5  7  9
View Code
***filter:(过滤)   筛选模式  返回的是迭代器  可加key(key,可迭代对象)
def func(x):    return x % 2 == 0ret = filter(func,[1,2,3,4,5,6,7])print(ret)for i in ret:    print(i)    # 2 4 6print([i for i in [1,2,3,4,5,6,7] if i % 2 == 0])   # 2 4 6
View Code
匿名函数:为了解决那些功能很简单的需求而设计的一句话函数。***lambda 匿名函数 一句话函数
#这段代码def calc(n):    return n**nprint(calc(10)) #换成匿名函数calc = lambda n:n**nprint(calc(10))
View Code
def func1(x,y):    return x + yret = lambda x, y:x+yprint(ret(2,3))   #  5def func1(x, y):    return x if x > y else yret = lambda x, y: x if x > y else yprint(ret(2,3))   # 3def func(x):return x % 2 == 0ret = filter(lambda x:x % 2 == 0, [1, 2, 3, 4, 5, 6, 7])print(ret)for i in ret:    print(i)   # 2 4 6def func1(x):    return x[1]L = [('a', 1), ('c', 2), ('d', 4),('b', 3), ]print(sorted(L, key=func1))   #[('a', 1), ('c', 2), ('b', 3), ('d', 4)]
View Code
 

 

函数名 = lambda 参数 :返回值#参数可以有多个,用逗号隔开#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值#返回值和正常的函数一样可以是任意数据类型
1,[1,2,3,4,5,6,7][1,4,9,16...]用map转化成lambda形式ret2 = map(lambda x:x**2,[1,2,3,4,5,6,7])for i in ret2:    print(i)
View Code
2,students=[('john','A',15),('jane','B',12),('dave','B',10)]l = sorted(students,key=lambda x:x[2])print(l)
View Code
取51的索引:l1 = [i for i in range(100) if i % 2 == 1]print(l1)count = 0for i in l1:    if i == 51:        print(count)    count += 1
取一个数的索引

 

 

转载于:https://www.cnblogs.com/ls13691357174/p/9203454.html

转载地址:https://blog.csdn.net/weixin_30348519/article/details/98187541 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:virtualBox下面安装linux系统如何共享目录
下一篇:行转列

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年03月23日 18时52分45秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java中类加载根路径_java中获取类加载路径和项目根路径的5种方法 2019-04-21
Java套接字传文件_Java通过套接字传输多个文件 2019-04-21
递归字符串逆序 java_在Java中使用递归反转字符串 2019-04-21
java推送功能实现原理图_IOS 基于APNS消息推送原理与实现(JAVA后台) - 图文 2019-04-21
java streamencoder_[求助]关于apcche与tomcat 2019-04-21
golang mongodb mysql_分享一个golang+mongodb+vuejs开发的博客程序 gocms 2019-04-21
hive java insert_hive表insert报错 2019-04-21
java 调试dll jna_Java调用dll的实现,JNA框架 | 学步园 2019-04-21
ios php上传视频文件_IOS上传图片 PHP服务器接收并上传 2019-04-21
php redis zrevrange,Redis Zrevrange 命令 2019-04-21
php利用word模板导出excel文件,php生成导出word doc和excel文件实例 2019-04-21
java 边缓存边播放,java动态缓存技术:WEB缓存应用 2019-04-21
php云盘匿名,PHP7之匿名类 2019-04-21
matlab数据大小不兼容,MATLAB无法执行赋值,因为左侧的索引与右侧的大小不兼容。 求解... 2019-04-21
editor.md使用php,editor.md 配置参数和使用方法 2019-04-21
python mod,mod_python的安装 2019-04-21
python分析彩票数据,这波太炸了!Python脚本可视化居然可以这么玩 2019-04-21
简单的mysql重置root密码,重置mysql的root密码最简单的方法 2019-04-21
用matlab仿真mmc环流抑制器,一种基于准PR控制原理的MMC阀组环流抑制方法 2019-04-21
oracle 排序的分析函数,Oracle SQL:使用分析排序函数 2019-04-21