《Python基础教程》读书笔记01-基础知识

  1. 除法
  2. 取余运算符
  3. 幂运算符
  4. 十六进制
  5. 八进制
  6. 输入
    1. Python2.7
    2. Python3
  7. 函数
  8. 模块
  9. cmath和复数
  10. 字符串表示 str 和 repr

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

值被转换为字符串的两种机制:

  1. str 函数:会把值转换成字符串
  2. repr 函数:会创建一个字符串,以合法的 Python 表达式的形式来表示值

Python中str()与repr()函数的区别

>>> 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" 转载请保留原文链接及作者。

目录