内置函数

本文详细介绍了Python中的多种内置函数,包括range(), eval(), exec(), compile(), dir(), callable(), import(), open(), buffering, hash, print(), bool, int, float, abs, divmod, round, pow, sum, min, max, list, tuple, reversed, reverse, bytes, ascii, repr, locals, globals, next, iter, id等,解析了它们的功能及用法。

1、range():

下面这两种用法的结果是一致的

print(range(100).__iter__())
print(iter(range(100)))

# <range_iterator object at 0x000001C62FCB8EF0>
# <range_iterator object at 0x000001C62FCB8EF0>

2、eval()和exec()

由下例可以看出来eval和exec都可以将引号去掉,但是eval是有返回值的,exec没有返回值,只会输出None

print(eval('1,2,3,4'))  # (1,2,3,4)
print(eval('1+2-3+4'))  # 4
print(exec('1+2-3+4'))  # None
exec("print('1+2-3+4')")  # 1+2-3+4
eval("print('1+2-3+4')")  # 1+2-3+4

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

 

参数说明:   

1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。  

2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。  

3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。

 

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

# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9

 

#简单求值表达式用eval
code1='1+2+3+4'
compile=compile(code1,'','eval')
print(eval(compile))
# 10
#交互语句用single
code='name=input("please input your name:")'
compile=compile(code,'','single')
name
# 运行结果
# Traceback (most recent call last):
#   File "C:/Pythonbc/课堂/内置函数.py", line 177, in <module>
#     name
# NameError: name 'name' is not defined
code='name=input("please input your name:")'
compile=compile(code,'','single')
exec(compile)
name
# please input your name:alix

4、iterator():下面代码中的两个print的效果是一样的,都是调用生成器,并从其中取值。

iterator=iter(range(100))
print(iterator.__next__())  # 0
print(next(iterator))  # 1

5、dir():判断某个数据类型中有什么用法。

print(dir([]))
# ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__',
'__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__',
'__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index',
'insert', 'pop', 'remove', 'reverse', 'sort']

查看某数据类型的用法有3种:

1、ctrl +鼠标左键单击:这是pycharm提供的方法

2、help:会查看到所有的方法以及它的使用方法,但是不知道用法

3、dir:查看到的只是方法名,这个方法适用于查看某方法是否在这个数据类型中

6、callcble():

def func():pass
a=1
print(callable(a))  # False 不可以调用
print(callable(print))  # True  可以调用
print(callable(func)) # True  可以调用

7、import():用法:import+模块名

import time  # 时间
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)
     print(per_str,end='', flush=True)
#100% : **************************************************
#这是一个进度条的代码,调用time模块来调节代码运行的速度
import os  # 操作系统

8、文件操作方法:open()

f=open('文件名','w',encoding='utf-8')

打开模式:r、w、a、rb、wb、ab

编码:utf-8/gbk

9、buffering:缓存

10、哈希:hash

print(id(1))  # 1779414080
print(id(2))  # 1779414080
print(hash('hdhshd'))  # 7061084334364224280
print(hash(123445))  # 123445
print(hash((1,2,3,4)))  # 485696759010151909

相同的内容的哈希结果是相同的

可用于:1、数据的存储和查找;2、模块:hashlib

判断一个数据类型是否可以hash,在一个程序执行过程中,对同一个值的hash的结果总是不变的;多次执行,对同一个值的hash结果可能改变。

11、 print():

print(1,2,3,4,sep='/')  # 1/2/3/4
print(1,2,3,4,sep='*')  # 1*2*3*4
print(1,2,sep=',')  # 1,2

其中sep在print中默认为以空格来分隔,且在结尾的时候是有一个end的默认参数,传的是\n(换行符)

print('abc\n')
print(2)
# abc
# 
# 2

在print中file的默认值是None,可以自己设定一个文件,如下所示,文件中存入了abc

f=open('a','w')
print('abc\n',file=f)   # abc被写入了文件中
print(2)

# 2

 进度条:其中\r:不论运行了多少,都要将光标移到最前面,相当于seek(0)

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)
    print(per_str,end='',flush=True)

# 100%:**************************************************

12、 bool:只有True和False两个值;可以与int、str之间之间相互转换

 

print(bool(''))  # False
print(bool(0))  # False
print(bool('a'))  # True
print(bool(1))  # True

 

13、int:整型,可以与bool、str之间相互转换

 

print(int(False))  # 0
print(int(True))  # 1

 

14、float:浮点型(可以理解为带小数点的数据)

15、abs:计算绝对值

 

print(abs(-24))  # 24

 

16、divmod:计算,并且返回除数和余数

 

print(divmod(35,4))   # (8,3)

 

17、round:保留小数点的位数,可自定义 round(number,ndigits)

 

print(round(3.1415926,3))  # 3.142

 

18、pow:幂运算

 

print(pow(2,2))  # 4
print(pow(2,2,2))  # 0
print(pow(2,2,3))  # 1

 

19、sum:计算数据的和

 

print(sum([1,2,3,4,5,6]))  # 21

 

20、min:比较数据的大小,返回最小值min(iterable,key,default)

 

t=(-25,31,6,8)
print(min(t))  # -25
print(min(t,key=abs))  # 6
print(min((),default=0))  # 0

 

21、max:比较数据的大小,返回最大值max(iterable,key,default)

 

t=(-25,31,6,8)
print(max(t))  # 31
print(max(t,key=abs))  # 31
print(max((),default=0))  # 0

 

 

22、list:列表,以['列表中的内容']的形式表现出来,可以对列表内的元素进行增删改查,是可迭代对象,可强制转换成元组tuple(list)

23、tuple:元组,以('元组中的内容')的形式表现出来,是可迭代对象,但元组内的元素不可变,可强制转换成列表list(tuple)

24、reversed:返回的是迭代器,不改变原来的列表,在内存中额外开辟一个新的空间来存储新的序列迭代器,这样比较占内存,但是并不是在原来的列表上进行修改,这样保留了原来的列表中的内容。

25、reverse:返回的值是None,是在原列表的基础上对列表进行修改的,虽然节省了内存空间,但是改变了原列表中的内容。

26、bytes:

print(bytes('ab',encoding='utf-8')) # b'ab'

26、ascii:只要是ascii码中的内容就打印出来,如果不是就转换成\u

print(ascii(2))  # 2
print(ascii('a'))  # 'a'
print(ascii('哇哈哈'))  # '\u54c7\u54c8\u54c8'

27、repr:用于%r格式化输出

print(repr(2))  # 2
print(repr('wahaha'))  # 'wahaha'
print(repr(2+4))  # 6
print(repr('q'+'a'))  # 'qa'

28、locals:局部变量,作用域根据locals的使用地方来确定其使用范围。

29、globals:全局变量,可在函数中使用globals来改变函数的使用范围,但最好不要用,在使用globals改变变量的值的同时,全局变量中的变量值也会同时发生改变。

30、next:迭代器包含有用法。

31、iter:可迭代对象同时拥有next和iter用法。

32、callable:判断是否为可迭代对象

def func():pass
a=1
print(callable(a))  # False
print(callable(print))  # True
print(callable(func))  # True

33、id:可以很快的找到某数据的存储地址

print(id(1))  # 1888793664
print(id(2))  # 1888793696

 

转载于:https://www.cnblogs.com/hzhcdhm/p/7810582.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值