python与shell脚本语法_【转】Python基础语法
学习⼀门编程语⾔,通常是学习该语⾔的以下⼏个部分的内容:
基础语法:如,变量的声明与调⽤、基本输出语句、代码块语法、注释等;
数据类型:通常都为 数字、字符串、布尔值、数组、链表、Map、Set等;
运算符:算术运算符、赋值运算符、⽐较运算符、逻辑运算符、位运算符等;
流程控制语句:分⽀语句、循环语句;
类的定义与使⽤:这个是⾯向对象编程语⾔才有的内容;
常⽤API的使⽤:常⽤⽅法、⼯具类或模块的使⽤。
掌握上⾯的内容,就算是对⼀门编程语⾔⼊门了,剩下的就是不断的在使⽤和总结中去提升了。本节我们先来说⼀说学习Python时的准备⼯作以及Python的基础语法。
本节内容
Hello, World!
Python2.x or Python3.x
变量与常量
接收⽤户输⼊
指定字符编码与解释器
注释
导⼊模块
获取脚本传⼊的参数
代码块语法
Python程序执⾏过程与.pyc⽂件
⼀、Hello, World
在任意⼀个⽬录下创建⼀个hello.py⽂件,我们来输出⼀个经典语句"Hello World!"
print("Hello, World")
执⾏hello.py这个python脚本的⽅式是:
python hello.py
输出为:
Hello, World
当然也可以直接进⼊python解释器交互式终端去执⾏print("Hello, World"),如下图所⽰:
思考:为什么打印⼀句“Hello World”已经成为很多⼈学习⼀门新语⾔的第⼀句代码?
有⼈说,这是学习⼀门语⾔⼊门的象征,因为写完了这个我就可以对别⼈说“我会写xx语⾔的程序了”。
本⼈认为要理解为什么Hello World如此简单,却⼜如此⼴为⼈知并被传颂,只需要想清楚⼀个问题:这个程序带给我们什么?
它告诉我们在这个编程语⾔中基本的输出语句是怎样的,这很重要;
它告诉我们要怎样去执⾏这个编程语⾔编写的程序,这同样很重要。
如果不知道上述两个问题,我们将⼨步难⾏。
⼆、Python 2.x or Python 3.x
1. Python
2.x 与 Python
3.x之间的关系
我们分别使⽤Python2.7 和 Python3.5的解释器提供的交互式终端来分别执⾏以下两条指令:
print("Hello, World")
print "Hello, World"
通过上图的执⾏结果会发现,print "Hello, World" 这条语句在Python2.7中可以正常执⾏,⽽在Python 3.5中会报错,也就是说Python 3.x与Python 2.x是不兼容的。这貌似是Python开发者犯的⼀个错误,⽽事实是Guido Van Rossum(Python语⾔的最初创建者)故意为之。Guido的本意就是想不考虑太多向后兼容性的问题,去适当地清理⼀下Python 2.x中不合理的内容,⽽不是把Python 3.x简单的当做对Python 2.x的更新版本。
实际上,Python 3.0在2008年12⽉就已经发布了,Python官⽅在2010年年中发布2.7时宣布,2.7将是Python 2.x的最后⼀个主发布版本。其实Python 2.7 是向Python 3.x的⼀个过渡版本,⾥⾯⽀持了⼀些
Python 3.x的特性。
2014年11⽉,Python官⽅宣布Python 2.7将会被⽀持到2020年,并再次确认了不会有Python 2.8发布,希望⽤户尽快迁移到Python 3.4+ 。3.x正在处于积极开发状态,并且在过去5年⾥已经发布了多个稳定版本,包括2012年的3.3,2014年的3.4,2015年的3.5。这意味着最近所有的标准库更新将默认只能在Python 3.x中可⽤。
2. Python 2.x 与 Python
3.x 的主要区别:
1) PRINT IS A FUNCTION
在Python 3.x中,输出语句需要使⽤print()函数,该函数接收⼀个关键字参数,以此来代替Python 2.x中的⼤部分特殊语法。下⾯是⼏个对⽐项:
⽬标Python 2.x的实现Python 3.x的实现
拼接并输出多个值
print "The result is", 2+3
print("The result is", 2+3)
打印⼀个元祖(1,2,3)
print(1,2,3) 或 print (1,2,3)
print((1,2,3))
输出⼀个内容并且不换⾏
print “Hello”,
print("Hello", end=" ")
输出⼀个新空⽩⾏
print
print()
将输出内容输出到标准错误输出⽂件
print >>sys.stderr, "fatal error"
print("fatal error", file=sys.stderr)
⾃定义多个输出内容之间的分隔/拼接符
N/A
print("There are possibilites!", sep="")
2) ALL IS UNICODE
Python 2.x中使⽤的默认字符编码为ASCII码,要使⽤中⽂字符的话需要指定使⽤的字符编码,如UTF-8;Python 3.x中使⽤的默认字符编码为Unicode,就不存在这个问题了。
3) 多变量同时赋值问题
python 2.x中如果要给多个变量同时赋值,要求=号右边的表达式返回结果的个数要与=号左边接收值的变量个数相等,不能多,也不能少。如:
a,b,c = (1,2,3) # 正常,a=1, b=2, c=3
a,b,c = range(5) # 报错,ValueError: too many values to unpack
a,b,c,d,e = [1,2,3] # 报错,ValueError: need more than 3 values to unpack
python 3.x中允许=号昨边的变量数⼩于=号右边表达式返回的结果的个数,但是需要有1个且只能有1个字典类型的变量来接收多余的返回值。与python 2.x相同的是 python 3.x中=号左边的变量数也是不能多与=号右边表达式的返回值个数,但是错误提⽰语更清晰了。
python怎么读取py文件a,b,c = (1,2,3) # 正常,a=1, b=2, c=3
a,*b,c = range(5) # 正常,a=0, b=[1,2,3], c=4
a,b,c,d,e = [1,2,3] # 报错,ValueError: not enough values to unpack (expected 5, got 3)
4) 某些库改名字了
Old NameNew Name
_winreg
winreg
ConfigParser
configparser
copy_reg
copyreg
Queue
queue
SocketServer
socketserver
markupbase
_markupbase
repr
reprlib
test.support
5) 选择Python 2 还是 Python 3呢?
如果是要开发⼀个新项⽬,不⽤考虑与⽼项⽬的兼容问题,最好是使⽤Python 3,因为就像Python官⽅说的那样,Python 3才是Python 语⾔的将来。现在很多第三⽅类库已经完成了或者正在积极完成对Python 3的⽀持,只是有些项⽬由于过于庞⼤,很难在短时间内完成。我们需要考虑的最⼤问题在于,新项⽬中是否存在必须的第三⽅类库,且该类库当前还不⽀持Python 3。如果不存在这个问题,那坚定的选择Python 3吧。
三、变量与常量
1. 变量
这是只是简单说下Python中变量的定义和使⽤,⽅便继续下⾯的内容。事实上,Python中变量的使⽤确实很简单:
name = "wader"
age =28
print("Name: ", name,) # Name: wader
print("Age : ", age) # Age : 28
2. 查看变量数据类型
python定义变量⽆需指定变量类型,python解释器会在运⾏时⾃动推断变量的数据类型。我们可以通过type()⽅法来查看变量类型:
type(name) # str
type(age) # int
3. 常量
事实上,Python中没有语法约束下的常量,仅仅是⽤完全⼤写字母的变量来表⽰这个变量不应该被改变。
COUNT = 10
四、接收⽤户输⼊
很多时候都需要与⽤户进⾏交互,通过⽤户输⼊的内容来做下⼀步操作。这⾥需要说明的是,Python 2 与Python 3中接收⽤户输⼊的⽅法是不⼀样的。
1. Python 2
Python 2中接收⽤户输⼊时,主要使⽤的是raw_input()函数:
name = raw_input("Enter your name: ")
print "Your name is ", name
2. Python 3
Python 3中接收⽤户输⼊时,主要使⽤的是input()函数:
name = input("Enter your name: ")
print("Your name is ", name)
3. 说明
通过Python 2中的raw_input() 与 Python 3中的input() 获取到的值都是str类型,若想转换为其他数据类型需要进⾏强制类型转换,这个等将Python数据类型的时候会说。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论