本学习笔记为阿里云天池龙珠计划Python训练营的学习内容,学习链接为:https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.19700039.J_9059755190.2.7c593ff4Ot9KZZ&postId=169961
一、学习知识点概要
该内容为Python训练营的Task 1,主要为Python语法
二、学习内容
由于前期已经具备了Python代码的编写能力,这里主要记录一些经常忘的操作方法和没见过的操作方法
位运算
python的位运算与c的基本上是一致的
只不过python的取反只能用~
而且可以用bin
函数来展示其二进制表示
py中万物接对象,通过dir
函数可以展现其相应的属性和方法
精确计算,保留小数
除了常用的format来保留小数以外,这里新学了一个新的方法:调用decimal
包里的 Decimal
对象和 getcontext()
方法来实现。
import decimal
from decimal import Decimal
默认精度28位
decimal
库主要来实现浮点数的精确计算,但会带来一定的性能损失
在将浮点数转为Decimal
对象时要先将浮点数转为字符串,因为浮点数本身就是不准确的
a = decimal.getcontext()
print(a)
# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999,
# capitals=1, clamp=0, flags=[],
# traps=[InvalidOperation, DivisionByZero, Overflow])
对于当前环境的精度设置,可以用decimal.getcontext().prec=x
来设置
decimal.getcontext().prec = 4
c = Decimal(1) / Decimal(3)
print(c)
# 0.3333
布尔函数
只要容器类型变量不为空bool(X)
就是True
type()
不会认为子类是一种父类类型,不考虑继承关系。isinstance()
会认为子类是一种父类类型,考虑继承关系。
两个主要参数end
和sep
,两者的区别是更改end
后如果没有指定添加\n
就不会回车,sep
中会直接输出给定的分隔字符后接着换行,感觉end
也能实现
assert关键词
当assert
的关键词后的条件为False时,会抛出AssertionError
异常
在进行单元测试时,可以用来在程序中置入检查点,只有条件为 True 才能让程序正常工作。(人为断点吧)
enumerate()
enumerate(sequence, [start=0])
sequence
:一个序列、迭代器或其他支持迭代对象。start
:下标起始位置。- 返回
enumerate
(枚举) 对象
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
lst = list(enumerate(seasons))
print(lst)
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
lst = list(enumerate(seasons, start=1)) # 下标从 1 开始
print(lst)
# [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
可以对传入的迭代对象的每一个进行标记,给予序号
enumerate
对象也可以进行for遍历
for i, language in enumerate(languages, 2):
print(i, 'I love', language) # 对应关系就与传入对象的顺序一致
print('Done!')
# 2 I love Python
# 3 I love R
# 4 I love Matlab
# 5 I love C++
# Done!
异常处理
finally
不管try
里面有没有异常,无论如何都会执行的代码
else
没有任何异常发生时会执行的代码
raise
抛出一个指定的异常
try:
raise NameError('HiThere')
except NameError:
print('An exception flew by!')
# An exception flew by!
三、学习问题与解答
主要查阅了Decimal
的作用和方法
四、学习思考与总结
对python的学习是下一步进行许多工作的基础,目前来说掌握这些语法应该足够使用一般的python语句了,之后会进一步进行学习和掌握