1.1变量
变量基本上就是代表(或者引用)某个值的名字,举例来说,如果希望用x代表3,只需要执行下面的语句即可:
>>>x = 3
这样的操作称为赋值(assignment),值3赋给了变量x。另一个说法就是:将变量x绑定到了值3上面,在变量被赋值以后,就可以在表达式中使用变量:
>>>x*2
>>>6
1.2语句
语句和表达式之间有什么区别呢?表达式是某事,而语句是做某事(换句话说就是告诉计算机做什么)。比如2*2是4,而print(2*2)打印4.那么区别在哪呢?请看下面吗的例子:
>>>2*2
>>>4
>>>print(2*2)
>>>4
如果在交互式解释器中执行上述两行代码,结果都是一样的,但这只是因为解释器总是吧所有表达式的值都打印出来而已(都使用了相同的repr函数对结果进行呈现)
语句和表达式之间的区别在赋值时会表现的更明显一些,因为语句不是表达式,所以没有值可供交互式解释器打印出来:
>>>x = 3
>>>
可以看到,下面立刻出现了新的提示符。但是有些东西已经变化了,x现在绑定给了值3.
这也是语句提醒的一般定义:它改变了事物,比如,赋值语句改变了变量,print语句改变了屏幕显示的内容
1.3 获取用户输入
我们在编写程序的时候,并不需要知道变量的值是多少。当然,解释器最终还是得知道变量的值。那么,不赋值优惠如何呢?解释器只知道我们告诉它的内容,对吧?不一定。
事实上,我们通常写程序让别人用,我们无法预测用户会给程序提供什么值。那么,看看非常有用的input函数吧
>>>x = input('x')
>>>x:34
>>>print(x)
>>>34
1.4 函数
一般情况下使用幂运算符(**)来计算乘方,事实上,可以使用函数来代替运算符,这个函数就是pow:
>>>2**3
>>>8
>>>pow(2,3)
>>>8
函数就像可以用来实现特定功能的小程序一样。Python的很多函数都能做很奇妙的事情。事实上,也可以自己定义函数,因此,我们通常会把pow等标准函数称为内建函数
上例中我使用函数的方式叫做调用函数,可以给他提供参数(本例中的2和3),他会返回值给用户。因为他返回了值,函数调用也可以简单的看做另一类表达式。
还有很多像这样的内建函数可以用于数值表达式。比如使用abs函数可以得到数的绝对值,round函数则会把浮点数四舍五入为 最接近的整数值:
>>>abs(-10)
>>>10
>>>1/2
>>>0
>>>round(1.0/2.0)
>>>1.0
注意最后两个表达式的区别。整数除法总是会戒除结果的小数部分,而round函数则会将结果四舍五入为最接近的整数。但是结果想将给定的数值向下取整为某个特定的整数呢?比如一个人的年龄是32.9岁,但是想把他取整为32,因为他还没有到33岁。python有实现这样功能的函数(称为floor),但是不能直接使用它。与其他很多有用的函数一样,你可以在某个模块中找到floor函数。
1.5 模块
可以把模块想象成导入到python以增强其功能扩展。如要使用特殊命令import来导入模块。前面内容提到的floor函数就在名为math的模中
>>>import
>>>math.floor(32.9)
>>>32.0
如果想把年龄转换为整数(32)而不是浮点数(32.0),可以使用int函数
>>>int(math.floor(32.9))
>>>32
在确定自己不会导入多个同名函数(从不同模块导入)的情况下,你可能不希望再每次调用函数的时候,都要写上模块的名字,那么,可以使用import命令的另一种形式:
>>>from math import sqrt
>>>sqrt(9)
>>>3.0
#科普:sqrt为返回数字x的平方根。
提示:事实上,可以使用变量来引用函数(或者python之中大多数的对象)比如,通过foo=math.sqrt进行赋值,然后就可以使用foo来计算平方根了:foo(4)的结果为2.0
在使用了“from模块import函数”这种形式的import命令之后,就可以直接使用函数,而不需要模块名作为前缀。
1.6 字符串
1.6.1对字符串中的引号进行转义:
>>>'Let\'s go!'
>>>"Let's go!"
1.6.2 拼接字符串
>>>"Let's say" ' "Hello,world!"'
>>>'Let\'s say "Hello,world!"'
我只是用一个接着另一个的方式写了两个字符串,python就会自动拼接他们(将他们合为一个字符串)。这种机制用的不多,有时却非常有用。不过他只是在同事写下两个字符串时有效。而且要一个紧接着另一个:
>>>x = 'hello,'
>>>y = 'world!'
>>>x + y
>>>''hello,world!"
1.6.3 字符串表示,str 和repr
通过前面的例子读者们可能注意到了,所有通过python打印的字符串还是被引号括起来的,这是因为python打印值的时候回保持该值在python代码中的状态,而不是你希望用户所看到的状态,如果使用python语句,结果就不一样了:
>>>'hello,world!'
>>>'hello,world!'
>>>print('hello,world!')
>>>hello,world!
我们在这里讨论的实际上是指被转换为字符串的两种机制。可以通过以下两个函数来使用这两种机制:一个事str函数,它会把值转换为合理性是的字符串,以便用户可以理解;而repr会创建一个字符串,它以合法的python表达式的形式来表示值。下面是一些例子:
>>>print repr('hello,world!')
>>>'hello,world!'
>>>print str('hello,world!')
>>>hello,world
repr(x)的功能也可以用`x`实现(注意:·是反引号,而不是单引号).如果希望打印一个包含数字的句子,那么反引号就很有用了。比如:
>>>temp = 42
>>>print('value is ' + temp)
>>>Traceback (most recent call last):
>>>File "<stdin>", line 1, in <module>
>>>TypeError: cannot concatenate 'str' and 'int' objects
>>>print('value is ' + `temp`)
>>>value is 42
第一个print语句并不能工作,那是因为不可以将字符串和数字进行相加,而第二个则可以正常工作,因为我们已经通过反引号将temp的值转换为字符串‘42’了。
简而言之,str,repr和反引号是将python值转换为字符串的3中方法。函数sgtr让字符串更容易阅读,而repr(和反引号)则把结果字符串转换为合法的python表达式。
1.7 本章的新函数:
函数 描述
abs(number) 返回数字的绝对值
cmach.sqrt(number) 返回平方根,也可以用户负数
float(object) 将字符串和数字换换位浮点数
help() 提供交互式帮助
input(prompt) 获取用户输入
int(object) 将字符串和数字转换为整数
long(object) 将字符串和数字转换为长整型数
math.ceil(number) 返回数的上入整数,返回值的类型为浮点数
math.floor(number) 返回数的下舍整数,返回值的类型为浮点数
math.sqrt(number) 返回平方根,不适用于负数
pow(x,y,[,z]) 返回x的y次幂(所得结果对z取模)
repr(prompt) 返回值的字符串表示形式
round(number[.ndigits]) 根据给定的精度对数字进行四舍五入
str(object) 将值转换为字符串