python内置函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python内置函数相关的知识,希望对你有一定的参考价值。

我们一起来看看python里的内置函数。什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数。这些函数有些我们已经用过了,有些我们还没用到过,还有一些是被封印了。

一.其它中的12个

1.执行字符串类型代码的执行

eval:用来执行一个字符串表达式,并返回表达式的值。
描述
eval() 函数用来执行一个字符串表达式,并返回表达式的值。

语法
以下是 eval() 方法的语法:

eval(expression[, globals[, locals]])
参数
expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
返回值
返回表达式计算结果。

实例
以下展示了使用 eval() 方法的实例:

>>>x = 7
>>> eval( \'3 * x\' )
21
>>> eval(\'pow(2,2)\')
4
>>> eval(\'2 + 2\')
4
>>> n=81
>>> eval("n + 4")
85
View Code
exce:执行存储在字符串或文件中的Python语句,相比于eval,exec可以执行更Python代码
描述
exec 执行储存在字符串或文件中的Python语句,相比于 eval,exec可以执行更复杂的 Python 代码。

需要说明的是在 Python2 中exec不是函数,而是一个内置语句(statement),但是Python 2中有一个 execfile() 函数。可以理解为 Python 3 把 exec 这个 statement 和 execfile() 函数的功能够整合到一个新的 exec() 函数中去了。

语法
以下是 exec 的语法:

exec obj
参数
obj -- 要执行的表达式。
返回值
exec 返回值永远为 None。

实例
以下展示了使用 exec 的实例:

# 实例 1
>>>exec \'print "Hello World"\'
Hello World
# 单行语句字符串
>>> exec "print \'runoob.com\'"
runoob.com
 
#  多行语句字符串
>>> exec """for i in range(5):
...   print "iter time: %d" % i
... """
iter time: 0
iter time: 1
iter time: 2
iter time: 3
iter time: 4

# 实例 2
x = 10
expr = """
z = 30
sum = x + y + z
print(sum)
"""
def func():
    y = 20
    exec(expr)
    exec(expr, {\'x\': 1, \'y\': 2})
    exec(expr, {\'x\': 1, \'y\': 2}, {\'y\': 3, \'z\': 4})
    
func()

输出结果:
60
33
34
View Code
- exec和eval都可以执行 字符串类型的代码

- eval有返回值 —— 有结果的简单计算

- exec没有返回值 —— 简单流程控制

- eval只能用在你明确知道你要执行的代码是什么
compile:将一个字符串编译为字节代码。
ret=\'for i in range(5):print(i)\'
c=compile(ret,\'\',\'exec\')        #用exec执行,有返回值
exec(c)
ret=\'1+2+3+4\'
c=compile(ret,\'\',\'eval\')        #\'\'引号原本的功能是放
print(eval(c))                  # 用eval执行,没有返回值,所以需要打印
View Code

2.输入输出

input:接受一个标准输入数据,返回为 string 类型。
>>>a = input("input:")
input:123                  # 输入整数
>>> type(a)
<type \'int\'>               # 整型
>>> a = input("input:")    
input:"runoob"           # 正确,字符串表达式
>>> type(a)
<type \'str\'>             # 字符串
>>> a = input("input:")
input:runoob               # 报错,不是表达式
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name \'runoob\' is not defined
<type \'str\'>
input3.x
>>>a = raw_input("input:")
input:123
>>> type(a)
<type \'str\'>              # 字符串
>>> a = raw_input("input:")
input:runoob
>>> type(a)
<type \'str\'>              # 字符串
>>>
input2.x
print:方法用于打印输出,最常见的一个函数。

print 在 Python3.x 是一个函数,但在 Python2.x 版本不是一个函数,只是一个关键字。

>>>print(1)  
1  
>>> print("Hello World")  
Hello World  
 
>>> a = 1
>>> b = \'runoob\'
>>> print(a,b)
1 runoob
 
>>> print("aaa""bbb")
aaabbb
>>> print("aaa","bbb")
aaa bbb
>>> 
 
>>> print("www","runoob","com",sep=".")  # 设置间隔符
www.runoob.com
View Code

3.内存相关

hash:用于获取取一个对象(字符串或者数值等)的哈希值。
>>>hash(\'test\')            # 字符串
2314058222102390712
>>> hash(1)                 # 数字
1
>>> hash(str([1,2,3]))      # 集合
1335416675971793195
>>> hash(str(sorted({\'1\':1}))) # 字典
7666464346782421378
View Code
id:用于获取对象的内存地址。
>>>a = \'runoob\'
>>> id(a)
4531887632
>>> b = 1
>>> id(b)
140588731085608
View Code

4.文件操作

open:函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
r:
    以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb:
    以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+:
    打开一个文件用于读写。文件指针将会放在文件的开头。

rb+:
    以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w:
    打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb:
    以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

w+:
    打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb+:
    以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

a:
    打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab:   
    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+:
    打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+:
    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
模式

file 对象方法

file.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。

file.readline():返回一行。

file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。

for line in f: print line :通过迭代器访问。

f.write("hello\\n"):如果要写入字符串以外的数据,先将他转换为字符串。

f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的比特数)。

f.seek(偏移量,[起始位置]):用来移动文件指针。

偏移量: 单位为比特,可正可负
起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾
f.close() 关闭文件
View Code
RUNOOB1
RUNOOB2
>>>f = open(\'test.txt\')
>>> f.read()
\'RUNOOB1\\nRUNOOB2\\n\'
示例

5.调用相关

callable :用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。

对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。

>>>callable(0)
False
>>> callable("runoob")
False
 
>>> def add(a, b):
...     return a + b
... 
>>> callable(add)             # 函数返回 True
True
>>> class A:                  #
...     def method(self):
...             return 0
... 
>>> callable(A)               # 类返回 True
True
>>> a = A()
>>> callable(a)               # 没有实现 __call__, 返回 False
False
>>> class B:
...     def __call__(self):
...             return 0
... 
>>> callable(B)
True
>>> b = B()
>>> callable(b)               # 实现 __call__, 返回 True
True
View Code

6.模块相关

__import__:用于动态加载类和函数,如果一个模块经常变化就可以使用 __import__() 来动态载入。
#!/usr/bin/env python    
#encoding: utf-8  
 
import os  
 
print (\'在 a.py 文件中 %s\' % id(os))
a.py
#!/usr/bin/env python    
#encoding: utf-8  
 
import sys  
__import__(\'a\')        # 导入 a.py 模块
test.py

7.帮助

help:用于查看函数或模块用途的详细说明。
>>>help(\'sys\')             # 查看 sys 模块的帮助
……显示帮助信息……
 
>>>help(\'str\')             # 查看 str 数据类型的帮助
……显示帮助信息……
 
>>>a = [1,2,3]
>>>help(a)                 # 查看列表 list 帮助信息
……显示帮助信息……
 
>>>help(a.append)          # 显示list的append方法的帮助
……显示帮助信息……
View Code

8.查看内置属性

dir:不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。
>>>dir()   #  获得当前模块的属性列表
[\'__builtins__\', \'__doc__\', \'__name__\', \'__package__\', \'arr\', \'myslice\']
>>> dir([ ])    # 查看列表的方法
[\'__add__\', \'__class__\', \'__contains__\', \'__delattr__\', \'__delitem__\', \'__delslice__\', \'__doc__\', \'__eq__\', \'__format__\', \'__ge__\', \'__getattribute__\', \'__getitem__\', \'__getslice__\', \'__gt__\', \'__hash__\', \'__iadd__\', \'__imul__\', \'__init__\', \'__iter__\', \'__le__\', \'__len__\', \'__lt__\', \'__mul__\', \'__ne__\', \'__new__\', \'__reduce__\', \'__reduce_ex__\', \'__repr__\', \'__reversed__\', \'__rmul__\', \'__setattr__\', \'__setitem__\', \'__setslice__\', \'__sizeof__\', \'__str__\', \'__subclasshook__\', \'append\', \'count\', \'extend\', \'index\', \'insert\', \'pop\', \'remove\', \'reverse\', \'sort\']
View Code

二.基础数据类型相关 38个

1.1数字类型

数据类型

bool:用于将给定参数转换为布尔类型,如果没有参数,返回 False。
>>>bool()
False
>>> bool(0)
False
>>> bool(1)
True
>>> bool(2)
True
>>> issubclass(bool, int)  # bool 是 int 子类
True
View Code
 int:用于将一个字符串或数字转换为整型。
>>>int()               # 不传入参数时,得到结果0
0
>>> int(3)
3
>>> int(3.6)
3
>>> int(\'12\',16)        # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>> int(\'0xa\',16)  
10  
>>> int(\'10\',8)  
8
View Code
float:用于将整数和字符串转换成浮点数。
>>>float(1)
1.0
>>> float(112)
112.0
>>> float(-123.6)
-123.6
>>> float(\'123\')     # 字符串
123.0
View Code
complex:用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。
>>>complex(1, 2)
(1 + 2j)
 
>>> complex(1)    # 数字
(1 + 0j)
 
>>> complex("1")  # 当做字符串处理
(1 + 0j)
 
# 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
>>> complex("1+2j")
(1 + 2j)
View Code

进制转换

bin:返回一个整数 int 或者长整数 long int 的二进制表示。
>>>bin(10)
\'0b1010\'
>>> bin(20)
\'0b10100\'
View Code
oct:将一个整数转换成8进制字符串
>>>oct(10)
\'012\'
>>> oct(20)
\'024\'
>>> oct(15)
\'017\'
>>>
View Code
hex:用于将10进制整数转换成16进制,以字符串形式表示。
>>>hex(255)
\'0xff\'
>>> hex(-42)
\'-0x2a\'
>>> hex(1L)
\'0x1L\'
>>> hex(12)
\'0xc\'
>>> type(hex(12))
<class \'str\'>      # 字符串
View Code

数学运算

abs:返回数字的绝对值。
#!/usr/bin/python
 
print "abs(-45) : ", abs(-45)
print "abs(100.12) : ", abs(100.12)
print "abs(119L) : ", abs(119L)


# 运行结果
abs(-45) :  45
abs(100.12) :  100.12
abs(119L) :  119
View Code
divmod:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。在 python 2.3 版本之前不允许处理复数。
>>>divmod(7, 2)
(3, 1)
>>> divmod(8, 2)
(4, 0)
>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)
View Code
round:方法返回浮点数x的四舍五入值。
print "round(80.23456, 2) : ", round(80.23456, 2)
print "round(100.000056, 3) : ", round(100.000056, 3)
print "round(-100.000056, 3) : ", round(-100.000056, 3)


# 运行结果
round(80.23456, 2) :  80.23
round(100.000056, 3) :  100.0
round(-100.000056, 3) :  -100.0
View Code
sum:方法对系列进行求和计算。
>>>sum([0,1,2])  
3  
>>> sum((2, 3, 4), 1)        # 元组计算总和后再加 1
10
>>> sum([0,1,2,3,4], 2)      # 列表计算总和后再加 2
12
View Code
min:方法返回给定参数的最小值,参数可以为序列。
print "min(80, 100, 1000) : ", min(80, 100, 1000)
print "min(-20, 100, 400) : ", min(-20, 100, 400)
print "min(-80, -20, -10) : ", min(-80, -20, -10)
print "min(0, 100, -400) : ", min(0, 100, -400)


# 运行结果
min(80, 100, 1000) :  80
min(-20, 100, 400) :  -20
min(-80, -20, -10) :  -80
min(0, 100, -400) :  -400
View Code
max:方法返回给定参数的最大值,参数可以为序列。
#!/usr/bin/python
 
print "max(80, 100, 1000) : ", max(80, 100, 1000)
print "max(-20, 100, 400) : ", max(-20, 100, 400)
print "max(-80, -20, -10) : ", max(-80, -20, -10)
print "max(0, 100, -400) : ", max(0, 100, -400)


# 运行结果
max(80, 100, 1000) :  1000
max(-20, 100, 400) :  400
max(-80, -20, -10) :  -10
max(0, 100, -400) :  100
View Code
pow:方法返回 xy(x的y次方) 的值。