ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

内置函数

2022-06-30 19:31:42  阅读:113  来源: 互联网

标签:__ 返回 内置 函数 迭代 test key print


print(globals())#字典形式返回全局变量
print(locals())#字典形式返回当前位置局部变量

# eval() 执行字符串,有返回值
s = "{'k1': '1', 'k2': '2'}"
dic1 = eval(s)#字符串去掉了引号
print(dic1, type(dic1))#{'k1': '1', 'k2': '2'} <class 'dict'>
print(eval('2+2'))#4
print(eval('print("test")'))#test   None 内层去掉引号执行print输出test,没有返回值故外层print输出None

#exec() 执行字符串内部代码,无返回值
print('exec', exec('2+2'))#exec None

#输入输出
number = input('请%s输入金额:' % 'Jerry')#input支持字符串格式化
print(number)
print('a', 'b', 3, sep='*', end='!')#sep设置输出字符连接符,end设置结束符
print('c')#a*b*3!c

f1 = open('log', encoding='utf-8', mode='w')
print('test2', file=f1)#输出内容到文件
f1.close()


help(int())#帮助,显示函数所有方法
print(hash('test'))#6406571659857012385     不可变对象通过hash算法转换成hash值
print(hash((1, 2, 3)))#529344067295497451
print(hash(1))#1    数字hash还是原数字
# print(hash([1, 2, 3]))# 列表是可变对象,不可hash

print(id('test'))#140574420681904   返回对象内存地址


def F1():
    pass

print(callable(F1))#True    callable()检查对象是否可调用
print(callable('test'))#False


# dir() 不带参数时,返回当前范围内的变量、方法和定义的类型列表
print(dir())#['F1', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'dic1', 'f1', 'number', 's']
# 带参数时,返回参数的属性、方法列表
print(dir(F1()))#['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']


# 迭代器相关: range() iter()  next()
print(len(range(3)))#3
# iter() 等于 __iter__()
L1 = [1, 2, 3, 4]
L1_obj = iter(L1)
print(L1_obj)#<list_iterator object at 0x7fc12e1b70a0>
# next() 等于__next__()
print(L1_obj.__next__())#1
print(next(L1_obj))#2

# 数据类型
# int 转换数字/整型
print(int('123'))#123
print(int(1.543))#1 截断转换整型
# print(int('1.543'))#***int 不能直接将小数点字符转换整型
print(float('1.543'))#1.543 float可直接转换
# bin    十进制转二进制字符串
print(bin(10), type(bin(10)))#0b1010 <class 'str'>  0b代表二进制
# oct    十进制转八进制字符串
print(oct(10), type(oct(10)))#0o12 <class 'str'>    0o代表八进制
# hex    十进制转十六进制字符串
print(hex(13), type(hex(13)))#0xd <class 'str'>     0x代表十六进制

# 数学运算
# 绝对值
print(abs(-3))#3
# 除法运算,返回一个包含 商和余数 的元组
print(divmod(10, 3))#(3, 1)
# 对浮点数四色五入,默认保留整数
print(round(1.2355, 3))#1.236
# pow()  求x的y次幂; 三个参数时表示 x**y/z 取余
print(pow(2, 3))#8
print(pow(2, 3, 3))#2
# sum()  返回可迭代对象的和
print(sum([1, 2, 3], 10))#16
# min()  返回可迭代对象的最小值,可加key,key为函数名,通过函数的规则返回最小值
# 与sum略有不同,min第一个参数为可迭代对象,第二个参数为函数key,函数可自定义
print(min([1, 2, 3, -4]))#-4
print(min([1, 2, 3, -4], key=abs))#1
# max()  返回可迭代对象的最大值,与min()相同,可加key
print(max([1, 2, 3, -4], key=abs))#-4

#数据结构
#list() 将可迭代对象转换为列表,如果是字典默认将key作为列表元素
tu1 = (1, 2, 3)
print(list(tu1))#[1, 2, 3]
l1 = list((1, 2, 3))
print(l1)#[1, 2, 3]
l2 = list({'key1': 'value', 'key2': 2})
print(l2)#['key1', 'key2']
# tuple()    将可迭代对象转换为元组,如果是字典默认将key作为元组的元素

# reversed() 列表翻转,并返回翻转后的迭代器
tu2 = (1, 2, 3)
print(reversed(tu2))#<reversed object at 0x7f9c2f694ee0>
for i in reversed(tu2):
    print(i)#3  2   1

# slice()    构造切片对象,用于列表的切片规则
L3 = [1, 2, 3, 4, 5]
L4 = [6, 7, 8, 9, 10]
rule = slice(1, 4, 2)
print(L3[rule])#[2, 4]
print(L4[rule])#[7, 9]

# str()  将数据转换为字符串

# format()   数据处理,精计算等
print(format('test', '<20'))#设置输出字符长度,左对齐
print(format('test', '>20'))#右对齐
print(format('test', '^20'))#居中

# bytes()   数据编码转换
s1 = 'test'
b1 = s1.encode('utf-8')
b2 = bytes(s1, encoding='utf-8')
print(b1, b2)# b'test' b'test'   两种方式相同

# ord()   查找字符的编码位置
print(ord('a'))#97  ASCII码位置
print(ord('王'))#29579   unicode位置
# chr()   输入位置查找字符
print(chr(97))#a
print(chr(666))#ʚ

# ascii()   返回表示对象的字符串,对于字符串中的非 ASCII 字符则返回通过 repr() 函数使用 \x, \u 或 \U 编码的字符
print(ascii('test'))#'test'
print(ascii(123))#123
print(type(ascii(123)))#<class 'str'>
print(ascii('王'))#'\u738b'

# repr()    返回一个对象的str形式
print('{"key1": "value"}')#{"key1": "value"}
print(repr('{"key1": "value"}'))#'{"key1": "value"}'
#可将格式字符保留
print("物品\t单价\t数量\n包子\t1\t2")#物品    单价    数量      包子    1    2
print(repr("物品\t单价\t数量\n包子\t1\t2"))#'物品\t单价\t数量\n包子\t1\t2'
# %r    repr字符串格式化,同样是str形式
s2 = 'Jerry'
print('hello, %r' % s2)#hello, 'Jerry'


# len()   返回可迭代对象的长度

# sorted()    对可迭代对象进行排序, 可使用key添加规则, 返回列表
print(sorted((1, 2, 3, -1)))#[-1, 1, 2, 3]
print(sorted((1, 2, 3, -1), key=abs))#[1, -1, 2, 3] 绝对值排序
dic2 = {'a': 1, 'c': 2, 'd': 4, 'b': 3}
def F2(f):
    return dic2[f]

print(sorted(dic2))#['a', 'b', 'c', 'd']    按key排序
print(sorted(dic2, key=F2))#['a', 'c', 'b', 'd']    按value排序

# all() 可迭代对象中全 都是 True时返回True
# any() 可迭代对象中有 一个 True时返回True
print(all([1, 2, True, (0, 1)]))#True
print(all([1, 2, True, (0)]))#False
print(any([0, False, '']))#False    空字符串为假
print(any([0, False, '0']))#True    字符串0为真

# zip() 拉链方法,对多个可迭代对象纵向拼接,返回一个迭代器, 迭代器长度由最短迭代对象决定
L1 = [1, 2, 3, 4]
L2 = ['test1', 'test2', 'test3']
tu1 = ('菜鸡', '入门', '高手')
new_obj = zip(L1, L2, tu1)
for i in new_obj:
    print(i)
"""
(1, 'test1', '菜鸡')
(2, 'test2', '入门')
(3, 'test3', '高手')
"""

# map() 循环模式:对可迭代对象元素按函数逻辑处理,返回迭代器
def F3(a):
    return a ** 2

obj = map(F3, [1, 2, 3])
for i in obj:
    print(i)#1  4   9

#与推导式类似
obj1 = [i ** 2 for i in range(1, 4)]
print(obj1)#[1, 4, 9]
#例二:
def F4(x, y):
    return x + y

obj2 = map(F4, [1, 2, 3], [4, 5, 6])
for i in obj2:
    print(i)#5  7   9


# filter()  过滤器,对可迭代对象元素进行筛选,对满足函数条件的值添加到迭代器中
def F5(a):
    return a % 2 == 0

obj3 = filter(F5, [1, 2, 3, 4, 5, 6])#函数名不需要带括号、参数
for i in obj3:
    print(i)#2  4   6

#类似推导式筛选
obj4 = [i for i in [1, 2, 3, 4, 5, 6] if i % 2 == 0]
print(obj4)#[2, 4, 6]


# lambda  匿名函数,格式:函数名 = lambda 形参: 返回值
def F6(x, y):
    return x + y

re = lambda x, y: x+y
print(F6(2, 3), re(2, 3))#5 5

re1 = filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5, 6])
for i in re1:
    print(i)#2  4   6

re2 = map(lambda x: x**2, [1, 2, 3, 4, 5, 6])
for i in re2:
    print(i)#1  4   9   16  25  36

L5 = [('test1', 5), ('test2', 3), ('test3', 4)]
print(sorted(L5, key=lambda x: x[1], reverse=True))#[('test1', 5), ('test3', 4), ('test2', 3)]  reverse=True倒序

 

标签:__,返回,内置,函数,迭代,test,key,print
来源: https://www.cnblogs.com/ggsdddup/p/16428194.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有