Python学习之旅 —— 基础篇(四)内置函数、装饰器

本篇要点:

内置函数

装饰器

一、内置函数

# abs() :取绝对值
>>> res = abs(-10)
>>> print(res)
10
# 0,None,"",{},[],() 布尔值都为空
# all(),any() 判断值的真假
# all() 所有为真才为真
p = all([0,1,2,3]) # 0为False,所有p 是False
print(p)
# any() 任意一个为真即为真
p = any((0,"",[],1))
print(p)
# 进制转换
# bin() 十进制转换成二进制
>>> a = 10
>>> print(bin(a))
0b1010
# int() 十进制转换成十进制
>>> a = 10
>>> print(int(a))
10
# oct() 十进制转换成八进制
>>> a = 10
>>> print(oct(a))
0o12
# hex() 十进制转换成十六进制
>>> a = 18
>>> print(hex(a))
0x12
# bool()真假值判断
>>> a = 0
>>> bool(a)
False
>>> a = 1
>>> bool(a)
True 

# float() 浮点数
# round(float, digits)接受一个浮点数 flt 并对其四舍五入,ndig位小数。
ret = 10 / 3
ret = float(ret)
ret = round(ret, 2) #保留两位小数
print(ret)

3.33
# [重要] 字符串转换成字节,用bytes()
name = "谢鹏程"
n = bytes(name, encoding="utf-8")
print(n)
n = bytes(name, encoding="gbk")
print(n)
# 查询数字对应的ASCII码表内的值
>>> a = chr(65)
>>> print(a)
A

# 查询字符对应的ASCII码表的位置
>>> a = ord("A")
>>> print(a)
65

可以用来生成随机字符串(随机密码),示例:

# 随机字符串生成
import random
li = []
for i in range(16):
    # 33 <= i < 127
    temp = random.randrange(33, 127)
    c = chr(temp)
    li.append(c)

res = "".join(li)
print(res)

# 随机大写字母和数字
li = []
for i in range(16):
    r = random.randrange(0, 3)
    if r == 1 or r == 2:
        temp = random.randrange(0, 10)
        li.append(str(temp))
    else:
        # 33 <= i < 127
        temp = random.randrange(65, 91)
        c = chr(temp)
        li.append(c)

res = "".join(li)
print(res)

# dir() 快速查看一个对象提供了哪些功能
res = dir(dict)
print(res)

#help()详细功能展示
res = help(dict)
print(res)
# [重要] divmod()  做除法,用元组的形式返回商和余数;
>>> a = 10
>>> b = 3
>>> divmod(a, b)
(3, 1)
可用于内容的分页展示:(共97条记录,每页展示10条,共需要多少页),示例:
total = 97
per = 10
temp_tuple = divmod(total, per)
if temp_tuple[1] == 0:
    ret = temp_tuple[0]
else:
    ret = temp_tuple[0] + 1
print(ret)
 
# enumerate(迭代器) 枚举,用列表的形式返回索引和值
a = [11,22,33,44,[1,2,3,4,]]
ret = enumerate(a)
print(list(ret))
[(0, 11), (1, 22), (2, 33), (3, 44), (4, [1, 2, 3, 4])]
#或者
a = [11,22,33,44,[1,2,3,4,]]
for index, value in enumerate(a):
    print(index, value)
0 11
1 22
2 33
3 44
4 [1, 2, 3, 4]
 
# eval 只执行表达式,并获取结果,有返回值
s = "1+2*3"
res = eval(s)
print(res)
7

# 将字符串编译成python代码
#compile()
string = "print(123)"
a = compile(string, "<string>", "exec")
print(type(a))

<class ‘code‘>

# 执行python代码,接收代码或者字符串,字符串时先编译成代码再执行,默认包含compile()
#exec() # 没有返回值
string = "print(123)"
exec(string)
print(exec(string)) # 没有返回值,默认是None

123
None
 
# [重要]  #filter(def, 可迭代对象) 做筛选; # map(def, 可迭代对象) 做操作.
li = [1,2,3,4,5,6,7,8,9,10,1,2,3]
# def f1(args):
#     if args > 6:
#         return True
# ret = filter(f1, li) #返回的是一个列表
ret = filter(lambda a: a > 6, li)
print(list(ret))

#map()
li = [1,2,3,4,5,6,7,8,9,10,1,2,3]
ret = map(lambda a: a + 100, li)
print(list(ret))
# id() 获取对象的内存地址
a = [1,2,3,4,]
print(id(a))
4315410184
# [重要]判断对象是否是某个类的实例,返回True or False
s = "xie"
res = isinstance(s, str) # 判断变量s是否为字符串
print(res)

True
 
# len() 返回长度
a = "Pesen"
print(len(a))

5
# globals() 返回当前范围的全局变量,字典形式;locals() 返回当前范围所有的局部变量
NAME = "Pesen"
def f1():
    sec_name = "Xie"
    print(locals())
    print(globals())
f1()

{‘sec_name‘: ‘Xie‘}
{‘__builtins__‘: <module ‘builtins‘ (built-in)>, ‘__name__‘: ‘__main__‘, ‘__package__‘: None, ‘f1‘: <function f1 at 0x10127b8c8>, ‘__spec__‘: None, ‘__file__‘: ‘/Users/xiepengcheng/PycharmProjects/LearnPython/day4/temp.py‘, ‘__cached__‘: None, ‘NAME‘: ‘Pesen‘, ‘__loader__‘: <_frozen_importlib_external.SourceFileLoader object at 0x1010a5c88>, ‘__doc__‘: None}
# min() 、max()、sun()取最小值,最大值,求和
li = [1,2,3,4,5,6,7,3,1,5]
print(min(li), max(li), sum(li))

1 7 37
# pow(x, y, z) 两个参数是计算x的y次方;三个参数是计算 x**y % z
a = pow(2, 4)
print(a)

16

a = pow(2, 4, 2)
print(a)

0
# zip() 接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
print(list(xyz))

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
# python3.5  按照字符来遍历
>>> for i in "谢鹏程":
...   print(i)

谢
鹏
程

# python2.7 #按照字节
>>> a = "谢鹏程"
>>> print a[:3], a[3:6], a[6:9]
谢 鹏 程
 

二、装饰器

在不改变原有函数功能的基础上,执行函数前后增加某项功能。

时间: 2024-10-21 10:05:12

Python学习之旅 —— 基础篇(四)内置函数、装饰器的相关文章

Python开发【第五篇】内置函数

abs() 函数返回数字的绝对值 __author__ = "Tang" a = -30 print(abs(a))# 30 all() 函数用于判断给定的可迭代参数iterable中的所有元素是否都为True,如果是则返回True,否则返回False 如果iterable的所有元素不为0.''".False或者iterable为空,all(iterable)返回True,否则返回False:注意 空列表 空元组 空字典 空字符串是True __author__ = &quo

python 内置函数 装饰器

一.内置函数 1.compile compile(source, filename, mode[, flags[, dont_inherit]]) 用来编译一段字符串的源码,结果可以生成字节码或者AST(抽像语法树),字节码可以使用函数exec()来执行,而AST可以使用eval()来继续编译. >>> str = "for i in range(0,10): print(i)" >>> c = compile(str,'','exec') >

内置函数 装饰器

内置函数:callable() 判断是否可以被调用chr(65)--A ord('B')--66r = compile(s,"<string>","exec")--把一个字符串编译成python代码exec(r )只执行没有返回值ret = eval()--拿到字符串转成表达式执行并返回结果,能执行有返回值dir()-快速查看,对象提供了哪些功能help()-读源码divmod()--得商得余 返回一个元组isinstance()--判断对象是否是某个类

Python学习之旅 —— 基础篇(六)模

本篇要点: 模块   一.模块 模块是实现某个功能的代码集合 函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块.   模块的种类 模块分为三种:     内置标准模块(标准库)     第三方模块(开源模块)     自定义模块   1.自动以模块 & 导入模块 使用模块前需要先将模块导入,模块导入的方式: # 单模块,且在同一目录下,建

Python学习之旅 —— 基础篇(三)set集合、函数、文件操作

本篇要点: 数据类型:set集合 函数 文件操作 三元运算(三目运算)和lambda表达式 一.set集合 python中数据类型的一种,是无序并且不重复的数据集合.set源码: class set(object): """ 创建set集合 set() -> new empty set object 把可迭代的数据类型转换成元组 set(iterable) -> new set object Build an unordered collection of uni

Python学习之旅 —— 基础篇(五)字符串格式化、递归、生成器&amp;迭代器、模块

本篇要点:字符串格式化递归生成器和迭代器模块 一.字符串格式化 字符串格式化的两种方式:占位符 %, format函数1.占位符% %[(name)][flags][width].[precision]typecode - (name) 可选,用于选择指定的key - flags 可选,可供选择的值有: - + 右对齐:正数前加正好,负数前加负号: - - 左对齐:正数前无符号,负数前加负号: - 空格 右对齐:正数前加空格,负数前加负号: - 0 右对齐:正数前无符号,负数前加负号:用0填充空

Python学习之旅 —— 基础篇(八)面向对象

概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 对比示例:函数式变成和面向对象编程 连接数据库的增删改查 # 函数式编程 def slect(host, username, password, sql): pass def create(host, username, password, database): pass def remove(host, usernam

Python学习之旅 —— 基础篇(七)反射、冒泡排序算法

本篇要点: 冒泡算法 反射 一.冒泡排序 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 代码示例: li = [5, 67, 2, 8, 5, 19, 6, 33, 98, ] times = len(li) for i in range(times): for j in

python学习笔记-Day04-第三部分(内置函数,map,filter,reduce,yield)

map遍历序列,对其中的每个元素进行相应的操作,最终获得新的序列lst =[1,2,3,4]def fun(arg):    return arg+10new_lst = map(fun,lst) def fun2(a1,a2):    return a1+a2lst01 = [11,22,33]lst02 = [1,2,3]map(func2,lst01,lst02)  #序列的长度需要一致 或者 map(lambda a1,a2,a3:a1+a2,lst01,lst02) #########