专栏Python程序员要懂的基础知识详解作者:异步社区199币2人已购查看
专栏零基础学编程Python3作者:异步社区69币33人已购查看Python有两种主要的方式来完成你的要求:语句和表达式(函数、算术表达式等)相信大部分读者已经了解二者的不同,但是不管怎样,我们还是再来复习一下。
语句使用关键字来组成命令,类似告诉解释器一个命令你告诉Python做什么,它就为你做什么,语句可以有输出,也可以没有输出下面我们先用print语句完成程序员们老生常谈第一个编程实例,Hello World。
>>> print Hello World! Hello World! 而表达式没有关键字它们可以是使用数学操作符构成的算术表达式,也可以是使用括号调用的函数它们可以接受用户输入,也可以不接受用户输入,有些会有输出,有些则没有。
(在Python中未指定返回值的函数会自动返回None,等价于NULL)下面举一个例子,函数abs()接受一个数值输入,然后输出这个数值的绝对值>>> abs(4) 4 >>> abs(-4) 4 本章中我们将分别介绍语句和表达式。
我们先来研究 print 语句1.1 程序输出,print语句及“Hello World!”有些语言,比如C,通过函数输出数据到屏幕,例如函数printf()然而在Python和大多数解释执行的脚本语言中,则使用语句进行输出。
很多的shell脚本语言使用echo命令来输出程序结果
核心笔记:在交互式解释器中显示变量的值通常当你想看变量内容时,你会在代码中使用print语句输出不过在交互式解释器中,你可以用 print 语句显示变量的字符串表示,或者仅使用变量名查看该变量的原始值在下面的例子中,我们把一个字符串赋值给变量myString,先用
print 来显示变量的内容,之后用变量名称来显示>>> myString = Hello World! >>> print myString Hello World! >>> myString Hello World! 。
注意,在仅用变量名时,输出的字符串是用单引号括起来了的这是为了让非字符串对象也能以字符串的方式显示在屏幕上——即它显示的是该对象的字符串表示,而不仅仅是字符串本身引号表示你刚刚输入的变量的值是一个字符串。
等你对Python有了较深入的了解之后,你就会知道print语句调用str()函数显示对象,而交互式解释器则调用repr()函数来显示对象下划线( _ )在解释器中有特别的含义,表示最后一个表达式的值所以上面的代码执行之后,下划线变量会包含字符串。
>>> _ Hello World! Python的print语句,与字符串格式操作符(%)结合使用,可实现字符串替换功能,这一点和 C 语言中的printf()函数非常相似>>> print "%s is number %d!" % ("Python",1) Python is number 1! 。
%s表示由一个字符串来替换,而%d表示由一个整型来替换,另外一个很常用的就是%f,它表示由一个浮点型来替换我们会在本章中看到更多类似的例子Python非常灵活,所以即使你将数字传递给 %s,也不会像其他要求严格的语言一样引发严重后果。
参阅6.4.1节以了解更多关于字符串格式操作符的信息Print语句也支持将输出重定向到文件这个特性是从Python2.0开始新增的符号 >> 用来重定向输出,下面这个例子将输出重定向到标准错误输出import sys print >> sys.stderr, Fatal error: invalid input!
下面是一个将输出重定向到日志文件的例子logfile = open(/tmp/mylog.txt, a) print >> logfile, Fatal error: invalid input! logfile.close() 。
1.2 程序输入和raw_input()内建函数从用户那里得到数据输入的最容易的方法是使用raw_input()内建函数它读取标准输入,并将读取到的数据赋值给指定的变量你可以使用 int() 内建函数将用户输入的字符串转换为整型。
>>> user = raw_input(Enter login name: ) Enter login name: root >>> print Your login is:, user Your login is: root
上面这个例子只能用于文本输入下面是输入一个数值字符串(并将字符串转换为整型)的例子:>>> num = raw_input(Now enter a number: ) Now enter a number: 1024 >>> print Doubling your number: %d % (int(num) * 2) Doubling your number: 2048 。
内建函数int()将数值字符串转换成整型值,这样才可以对它进行数学运算参阅第6.5.3节以了解更多有关内建函数raw_input()的知识核心笔记:从交互式解释器中获得帮助在学习 Python 的过程中,如果需要得到一个生疏函数的帮助,只需要对它调用内建函数help()。
通过用函数名作为 help()的参数就能得到相应的帮助信息>>> help(raw_input) Help on built-in function raw_input in module __builtin__: raw_input(...) raw_input([prompt]) -> string
从标准输入读取一个字符串并自动删除串尾的换行字符如果用户键入了EOF字符(Unix: Ctrl+D, Windows: Ctrl+Z+回车),则引发EOFError,在Unix平台,只要可用,就使用GNU readline库。
如果提供提示字符串参数,则显示该字符串并自动删去字符串末尾的换行字符(本段是help(raw_input)的输出,译文是对其加以解释,方便读者理解——译者注)核心风格: 一直在函数外做用户交互操作新手在需要显示信息或得到用户输入时,很容易想到使用 print 语句和raw_input()内建函数。
不过我们在此建议函数应该保持其清晰性,也就是它只应该接受参数,返回结果从用户那里得到需要的数据,然后调用函数处理,从函数得到返回值,然后显示结果给用户这样你就能够在其他地方也可以使用你的函数而不必担心自定义输出的问题。
这个规则的一个例外是,如果函数的基本功能就是为了得到用户输出,或者就是为了输出信息,这时在函数内使用print语句或 raw_input() 也未尝不可更重要的是,将函数分为两大类,一类只做事,不需要返回值(比如与用户交互或设置变量的值),另一类则执行一些运算,最后返回结果。
如果输出就是函数的目的,那么在函数体内使用print语句也是可以接受的选择1.3 注释和大部分脚本及Unix-shell语言一样,Python也使用 # 符号标示注释,从 # 开始,直到一行结束的内容都是注释。
>>> # one comment ... print Hello World! # another comment Hello World! 有一种叫做文档字符串的特别注释你可以在模块、类或者函数的起始添加一个字符串,起到在线文档的功能,这是Java程序员非常熟悉的一个特性。
def foo(): "This is a doc string." return True 与普通注释不同,文档字符串可以在运行时访问,也可以用来自动生成文档1.4 操作符和其他绝大多数的语言一样,Python中的标准算术操作符以你熟悉的方式工作。
+ - * / // % ** 加、减、乘、除和取余都是标准操作符Python有两种除法操作符,单斜杠用作传统除法,双斜杠用作浮点除法(对结果进行四舍五入)传统除法是指如果两个操作数都是整型的话,它将执行的是地板除(取比商小的最大整数)(关于“地板除”请参考第5章——译者注),而浮点除法是真正的除法,不管操作数是什么类型,浮点除法总是执行真正的除法。
你可以在第5章学到更多有关传统除法、真正的除法及浮点除法的知识还有一个乘方操作符,双星号(**)尽管我们一直强调这些操作符的算术本质,但是请注意对于其他数据类型,有些操作符是被重载了,比如字符串和列表让我们看一个例子。
>>> print -2 * 4 + 3 ** 2 1 就像你看到的,操作符的优先级和你想象的一样:+和−优先级最低,*、/、//、%优先级较高,单目操作符+和−优先级更高,乘方的优先级最高(3**2)首先求值,然后是(−2*4),然后是对两个结果进行求和。
Python当然也有标准比较操作符,比较运算根据表达式的值的真假返回布尔值< >= == != <> 试一试,看看这些比较运算会得到什么结果>>> 2 >> 2 == 4 False >>> 2 > 4 False >>> 6.2 >> 6.2 >> 6.2 <= 6.20001 True 。
Python目前支持两种“不等于”比较操作符,!=和<>,分别是C风格和ABC/Pascal风格目前后者慢慢地被淘汰了,所以我们推荐使用前者Python也提供了逻辑操作符and or not 使用逻辑操作符可以将任意表达式连接在一起,并得到一个布尔值。
>>> 2 >> 2 > 4 or 2 >> not 6.2 >> 3 < 4 < 5 True 最后一个例子在其他语言中通常是不合法的,不过Python支持这样的表达式,既简洁又优美。
它实际上是下面表达式的缩写:>>> 3 < 4 and 4 < 5 核心风格:合理使用括号增强代码的可读性在很多场合使用括号都是一个好主意,而没用括号的话,会使程序得到错误结果,或使代码可读性降低,引起阅读者困惑。
括号在Python语言中不是必须存在的,不过为了可读性,使用括号总是值得的任何维护你代码的人会感谢你,在你再次阅读自己的代码时,你也会感谢你自己
亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。