【超全面】Python内置函数详解(三)

简介: 【超全面】Python内置函数详解(三)

【超全面】Python内置函数详解(二):https://developer.aliyun.com/article/1540493

44、memoryview()

**描述:**memoryview() 函数返回给定参数的内存查看对象(Momory view)。返回由给定实参创建的“内存视图”对象, Python 代码访问一个对象的内部数据,只要该对象支持缓冲区协议 而无需进行拷贝

**语法:**memoryview(obj)

**参数:**obj – 对象

案例:

v = memoryview(bytearray("abcefg", 'utf-8'))
v[1]
98
v[-1]
98
 v[1:4]
<memory at 0x0000028B68E26AC8>
v[1:4].tobytes()
b'bce'

45、next()

**描述:**next() 返回迭代器的下一个项目。next() 函数要和生成迭代器的iter() 函数一起使用。


**语法:**next(iterator[, default])


参数:


iterator – 可迭代对象

default – 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。

案例:

it = iter([5,3,4,1])
next(it)
5
 
next(it)
3
 
next(it)
4

46、object()

**描述:**Object类是Python中所有类的基类,如果定义一个类时没有指定继承哪个类,则默认继承object类。返回一个没有特征的新对象。object 是所有类的基类。

**语法:**object()

参数:无

案例:无

47、open()

**描述:**open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。

**语法:**open(name[, mode[, buffering]])

参数:

  • name : 一个包含了你要访问的文件名称的字符串值。
  • mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
  • buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

image.png

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() 关闭文件

案例:

f=open('test.txt',encoding='utf-8')   #打开文件
data=f.read()#文件操作
print(data)
f.close()  #关闭文件

48、pow()

**描述:**pow()方法返回 xy(x的y次方) 的值。函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z

**语法:**pow(x, y[, z])

参数:

  • x – 数值表达式。
  • y – 数值表达式。
  • z – 数值表达式。
  • 案例:
pow(10, 2)
100

pow(4,3,5)
 4
等价于4**3%5 

49、print()

**描述:**打印对象,此函数不解释

语法:

参数:

案例:

50、property()

**描述:**property() 函数的作用是在新式类中返回属性值。

**语法:**class property([fget[, fset[, fdel[, doc]]]])

参数:

  • fget – 获取属性值的函数
  • fset – 设置属性值的函数
  • fdel – 删除属性值函数
  • doc – 属性描述信息

案例:

暂不解释

51、range()

**描述:**range() 函数可创建一个整数列表,一般用在 for 循环中。

**语法:**range(start, stop[, step])

参数:


start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

案例:

list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
list(range(1, 11))     # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]

for i in range(5):
    print(i)
0
1
2
3

52、reversed()

**描述:**reversed 函数返回一个反转的迭代器。

**语法:**reversed(seq)

**参数:**seq – 要转换的序列,可以是 tuple, string, list 或 range。

案例:

#反转列表
rev = reversed([1,4,2,3,1])
list(rev)
[1, 3, 2, 4, 1]


for i in rev:
    print(i)
1
3
2
4
1 
#反转字符串
rev = reversed('我爱中国')
list(rev)
['国', '中', '爱', '我']

for i in rev:
    print(i)

53、round()

**描述:**round() 函数返回浮点数x的四舍五入值。

**语法:**round( x [, n] )

参数:

  • x – 数值表达式。
  • n --代表小数点后保留几位

案例:

round(10.0222222, 3)
10.022

54、set()

**描述:**set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

**语法:**class set([iterable])

**参数:**iterable – 可迭代对象对象;

案例:

#返回一个set对象,可实现去重:
a = [1,4,2,3,1]
set(a)
{1, 2, 3, 4}

55、slice()

**描述:**slice() 函数实现切片对象,主要用在切片操作函数里的参数传递。返回一个表示由 range(start, stop, step) 所指定索引集的 slice对象


语法:


class slice(stop)


class slice(start, stop[, step])


参数:


start – 起始位置

stop – 结束位置

step – 间距

案例:

a = [1,4,2,3,1]
a[slice(0,5,2)] #等价于a[0:5:2]
[1, 2, 1]

56、sorted()

**描述:**sorted() 函数对所有可迭代的对象进行排序操作。


sort 与 sorted 区别:


sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作;list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。


**语法:**sorted(iterable, key=None, reverse=False)#cmp 3.x已经没有了


参数:


iterable – 可迭代对象。

key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

案例:

a = [5,7,6,3,4,1,2]
b = sorted(a)       # 保留原列表
a 
[5, 7, 6, 3, 4, 1, 2]
b
[1, 2, 3, 4, 5, 6, 7]
 
#利用key
L=[('b',2),('a',1),('c',3),('d',4)]


sorted(L, key=lambda x:x[1])  
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

#按年龄排序
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda s: s[2]) 
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
#按降序
sorted(students, key=lambda s: s[2], reverse=True)  
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
 
#降序排列
a = [1,4,2,3,1]
sorted(a,reverse=True) 
[4, 3, 2, 1, 1]

57、staticmethod

**描述:**staticmethod 返回函数的静态方法。该方法不强制要求传递参数,如下声明一个静态方法:


语法:


class C(object):


@staticmethod


def f(arg1, arg2, …):



以上实例声明了静态方法 f,从而可以实现实例化使用 C().f(),当然也可以不实例化调用该方法 C.f()。


**参数:**无

案例:

class C(object):
    @staticmethod
    def f():
        print('runoob');
 
C.f();          # 静态方法无需实例化
cobj = C()
cobj.f()        # 也可以实例化后调用

58 、str()

**描述:**返回一个 str版本的 object,str 是内置字符串 class

**语法:**class str(object=’’)

**参数:**object – 对象。

案例:

dict = {'runoob': 'runoob.com', 'google': 'google.com'};
str(dict)
"{'google': 'google.com', 'runoob': 'runoob.com'}"

59、sum()

**描述:**sum() 方法对系列进行求和计算。

**语法:**sum(iterable[, start])

参数:

  • iterable – 可迭代对象,如:列表、元组、集合。
  • start – 指定相加的参数,如果没有设置这个值,默认为0。

案例:

a = [1,4,2,3,1]
sum(a)
11
 
sum(a,10) #求和的初始值为10
21

60、super()

**描述:**super() 函数是用于调用父类(超类)的一个方法。super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。


MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。


**语法:**super(type[, object-or-type])


参数:


type – 类。

object-or-type – 类,一般是 self

案例:

class A:
     def add(self, x):
         y = x+1
         print(y)
class B(A):
    def add(self, x):
        super().add(x)
b = B()
b.add(2)  # 3
3

61、tuple()

描述: 元组 tuple() 函数将列表转换为元组。

**语法:**tuple( iterable )

**参数:**iterable – 要转换为元组的可迭代序列。

案例:

tuple([1,2,3,4])
(1, 2, 3, 4)
 
tuple({'a':2,'b':4})    #针对字典 会返回字典的key组成的tuple
 ('a', 'b')

62、type()

**描述:**type() 函数如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象。


isinstance() 与 type() 区别:


type() 不会认为子类是一种父类类型,不考虑继承关系。

isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。


语法:


type(object)


type(name, bases, dict)


参数:


name – 类的名称。

bases – 基类的元组。

dict – 字典,类内定义的命名空间变量。

案例:

type([2])
list

type({0:'zero'})
dict
x = 1          
type( x ) == int    # 判断类型是否相等
True
 
# 三个参数
class X(object):
    a = 1
X = type('X', (object,), dict(a=1))  # 产生一个新的类型 X
X
 __main_

63、zip()

**描述:**zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。


我们可以使用 list() 转换来输出列表。


如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 ***** 号操作符,可以将元组解压为列表。


**语法:**zip([iterable, …])


**参数:**iterable 一个或多个迭代器

案例:

创建一个聚合了来自每个可迭代对象中的元素的迭代器:
x = [3,2,1]
y = [4,5,6]
list(zip(y,x))
[(4, 3), (5, 2), (6, 1)]

#搭配for循环,数字与字符串组合 
a = range(5)
b = list('abcde')
[str(y) + str(x) for x,y in zip(a,b)]
['a0', 'b1', 'c2', 'd3', 'e4']

list1 = [2,3,4]
list2 = [5,6,7]
for x,y in zip(list1,list2):
    print(x,y,'--',x*y)
2 5 -- 10
3 6 -- 18
4 7 -- 28
#元素个数与最短的列表一致
list(zip(x,b))
 [(3, 'a'), (2, 'b'), (1, 'c')]
#与 zip 相反,zip(* ) 可理解为解压,返回二维矩阵式
a1, a2 = zip(*zip(a,b))          
a1
(0, 1, 2, 3, 4)
a2
('a', 'b', 'c', 'd', 'e'
相关文章
|
1天前
|
Python
经验大分享:python类函数,实例函数,静态函数
经验大分享:python类函数,实例函数,静态函数
|
1天前
|
Python
|
1天前
|
Python
经验大分享:Python函数返回值
经验大分享:Python函数返回值
|
1天前
|
分布式计算 算法 Python
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解
|
2天前
|
Python
python函数
python函数
5 0
|
2天前
|
Python
python之print函数
python之print函数
9 0
|
3天前
|
Python
使用Python计算有效值函数(RMS值)
使用Python计算有效值函数(RMS值)
9 0
|
3天前
|
存储 Python
在Python中,匿名函数(lambda表达式)是一种简洁的创建小型、一次性使用的函数的方式。
【6月更文挑战第24天】Python的匿名函数,即lambda表达式,用于创建一次性的小型函数,常作为高阶函数如`map()`, `filter()`, `reduce()`的参数。lambda表达式以`lambda`开头,后跟参数列表,冒号分隔参数和单行表达式体。例如,`lambda x, y: x + y`定义了一个求和函数。在调用时,它们与普通函数相同。例如,`map(lambda x: x ** 2, [1, 2, 3, 4, 5])`会返回一个列表,其中包含原列表元素的平方。
13 4
|
3天前
|
Python
在Python中,高阶函数是指那些可以接受一个或多个函数作为参数,并返回一个新的函数的函数。
【6月更文挑战第24天】Python的高阶函数简化代码,增强可读性。示例:`map()`检查用户名合法性,如`[&quot;Alice&quot;, &quot;Bob123&quot;, &quot;Charlie!&quot;, &quot;David7890&quot;]`;`reduce()`与`lambda`结合计算阶乘,如1到10的阶乘为3628800;`filter()`找出1到100中能被3整除的数,如[3, 6, 9, ..., 99]。
12 3
|
4天前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之建了一个python 的 UDF脚本,生成函数引用总是说类不存在,是什么导致的
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。