《Python基础教程》读书笔记01-基础知识
Python
就是“一种解释型的、面向对象的、带有动态语义的高级程序设计语言”。
除法
# python3
>>> 1/2.
0.5
>>> 1/2
0.5
# python2
>>>1/2
0
# 有浮点数参加的运算,结果为浮点数
>>>1/2.
0.5
# 如果希望Python只执行普通的除法
>>>from __future__ import division
>>> 1/2
0.5
# 另外一个方法,命令行中运行 Python,可以使用命令开关 -Qnew
实现整除的操作符——双斜线
:
# python2,3
>>> 1 // 2
0
>>> 1.0 // 2.0
0.0
取余运算符
>>> 2.75 % 0.5
0.25
幂运算符
>>> 2 ** 3
8
>>> -3 ** 2
-9
>>> (-3) ** 2
9
# 幂运算符比取反的优先级高-3**2等同于-(3**2)
十六进制
>>> 0xaF
175
八进制
>>> 010
8
输入
Python2.7
使用 raw_input() 返回字符串,input() 需要合法的 Python 表达式。
>>> x = input()
1
>>> x = input()
'a'
>>> x = input()
a
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
x = input()
File "<string>", line 1, in <module>
NameError: name 'a' is not defined
>>> x = raw_input()
1
>>> x = raw_input()
a
查看 Built-in Functions ,得知:
input([prompt])
Equivalent(等效) to eval(raw_input(prompt))
input()
本质上还是使用 raw_input()
来实现的,只是调用完 raw_input()
之后再调用 eval()
函数,所以,你甚至可以将表达式作为 input()
的参数,并且它会计算表达式的值并返回它。
除非对 input()
有特别需要,否则一般情况下我们都是推荐使用 raw_input()
来与用户交互。
Python3
取消了 raw_input()
函数。
input()
函数等同于 2.7 中的 raw_input()
函数,返回的是字符串,如果需要和整数比较,可以使用 int()
函数转换成整数。
函数
# 1. 幕函数
>>> pow(2,3)
8
# 2. 绝对值
>>> abs(-10)
10
# 3. 四舍五入
>>> round(1.0/2.0)
1.0
>>> import math
# 4. 向下取整
>>> math.floor(3.9)
3.0
# 5. 向上取整
>>> math.ceil(2.1)
3.0
模块
使用floor
函数
>>> import math
>>> math.floor(32.0)
32.0
# 可以使用另外一种形式,不用每次调用函数的时候都写上模块的名字。
>>> from math import sqrt
>>> sqrt(9)
3.0
# 可以使用 变量引用函数:
>>> foo = math.sqrt
>>> foo(4)
2.0
cmath和复数
>>> sqrt(-1)#普通sqrt函数不支持复数
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
sqrt(-1)
ValueError: math domain error
>>> import cmath # 如果使用from...import...会导致普通的sqrt函数无法使用
>>> cmath.sqrt(-1)
1j
>>> (1+3j) * (9+4j)# python本身提供了对复数的支持
(-3+31j)
字符串表示 str 和 repr
>>> 'hello'
'hello'
>>> 1000L
1000L
>>> print 'hello'
hello
>>> print 1000L
1000
>>> print repr("hello")
'hello'
>>> print repr(1000L)
1000L
>>> print str(1000L)
1000
>>> print str('hello')
hello
>>> t = 10
>>> print 'hello,' + t # repr(x) 也可以写做 `x`,但在python3.x 中不可用
# 注意: 这里没有什么自动装箱,需要用 str() 或repr()转换
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
print 'hello,' + t
TypeError: cannot concatenate 'str' and 'int' objects
>>> print 'hello,' +`t` # repr(x) 也可以写做 `x`,但在python3.x 中不可用
hello,10
>>> print 'hello,' + repr(t)
hello,10
值被转换为字符串的两种机制:
- str 函数:会把值转换成字符串
- repr 函数:会创建一个字符串,以合法的 Python 表达式的形式来表示值
>>> from datetime import datetime
>>> now = datetime.now()
>>> print(str(now))
2017-04-22 15:41:33.012917
>>> print(repr(now))
datetime.datetime(2017, 4, 22, 15, 41, 33, 12917)
通过 str()
的输出结果我们能很好地知道 now 实例的内容,但是却丢失了 now 实例的数据类型信息。而通过 repr()
的输出结果我们不仅能获得 now 实例的内容,还能知道 now 是 datetime.datetime
对象的实例。
因此 str()
与 repr()
的不同在于:
str()
的输出追求可读性,输出格式要便于理解,适合用于输出内容到用户终端。repr()
的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用。
另外如果想要自定义类的实例能够被 str()
和 repr()
所调用,那么就需要在自定义类中重载 __str__
和 __repr__
方法。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com
文章标题:《Python基础教程》读书笔记01-基础知识
文章字数:1.2k
本文作者:Bin
发布时间:2016-07-19, 19:18:10
最后更新:2019-08-06, 00:07:35
原始链接:http://coolview.github.io/2016/07/19/Python%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/%E3%80%8APython%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B%E3%80%8B%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B001-%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。