Python基本语法经典教程
本⽂讲述了Python基本语法。分享给⼤家供⼤家参考,具体如下:
概述:
这⾥主要讲述以下内容:
①缩进
②流程控制语句
③表达式
④函数
⑤对象的⽅法
⑥类型
⑦数学运算
1. 缩进
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且Python语⾔利⽤缩进表⽰语句块的开始和退出(Off-side规则),⽽⾮使⽤花括号或者某种关键字。增加缩进表⽰语句块的开始,⽽减少缩进则表⽰语句块的退出。缩进成为了语法的⼀部分。例如if语句:
oracle备份if age < 21:
print("你不能买酒。")
print("不过你能买⼝⾹糖。")
print("这句话处于if语句块的外⾯。")
注:上述例⼦为python 3.0版本的代码
根据PEP的规定,必须使⽤4个空格来表⽰每级缩进(不清楚4个空格的规定如何,在实际编写中可以⾃定义空格数,但是要满⾜每级缩进间空格数相等)。使⽤Tab字符和其它数⽬的空格虽然都可以编译通过,但不符合编码规范。⽀持Tab字符和其它数⽬的空格仅仅是为兼容很旧的的Python程序和某些有问题的编辑程序。
2. 流程控制语句
if语句,当条件成⽴时运⾏语句块。经常与else, elif(相当于else if) 配合使⽤。
for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
while语句,当条件为真时,循环运⾏语句块。计算机入门自学教程python
try语句。与except,finally配合使⽤处理在程序运⾏中出现的异常情况。
class语句。⽤于定义类型。
def语句。⽤于定义函数和类型的⽅法。
pass语句。表⽰此⾏为空,不运⾏任何操作。
assert语句。⽤于程序调适阶段时测试运⾏条件是否满⾜。
with语句。Python2.6以后定义的语法,在⼀个场景中运⾏语句块。⽐如,运⾏语句块前加密,然后在语句块运⾏退出后解密。
yield语句。在迭代器函数内使⽤,⽤于返回⼀个元素。⾃从Python 2.5版本以后。这个语句变成⼀个运算符。
raise语句。制造⼀个错误。
import语句。导⼊⼀个模块或包。
from import语句。从包导⼊模块或从模块导⼊某个对象。
import as语句。将导⼊的对象赋值给⼀个变量。
in语句。判断⼀个对象是否在⼀个字符串/列表/元组⾥。
3. 表达式
Python的表达式写法与C/C++类似。只是在某些写法有所差别。
主要的算术运算符与C/C++类似。
+, -, *, /, //, **, ~, %分别表⽰加法或者取正、减法或者取负、乘法、除法、整除、乘⽅、取补、取模。
>>, <<;表⽰右移和左移。
&, |, ^表⽰⼆进制的AND, OR, XOR运算。
>, <, ==, !=, <=, >=⽤于⽐较两个表达式的值,分别表⽰⼤于、⼩于、等于、不等于、⼩于等于、⼤于等于。
在这些运算符⾥⾯,~, |, ^, &, <<, >>必须应⽤于整数。
Python使⽤and, or, not表⽰逻辑运算。
is, is not⽤于⽐较两个变量是否是同⼀个对象。in, not in⽤于判断⼀个对象是否属于另外⼀个对象。
Python列表推导式
列表推导式(list comprehension)是利⽤其他列表创建新列表(类似于数学术语中的集合推导式)的⼀种⽅法。它的⼯作⽅式类似于for循环,也很简单:
In [39]: [x*x for x in range(10)]
Out[39]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
如果只想打印出那些能被3整除的平⽅数,只需要通过添加⼀个if部分在推导式中就可以完成:
In [41]: [x*x for x in xrange(10) if x % 3 == 0]
Out[41]: [0, 9, 36, 81]
也可以增加更多的for语句的部分:
In [42]: [(x,y) for x in range(3) for y in range(3)]
Out[42]: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
In [43]: [[x,y] for x in range(2) for y in range(2)]
Out[43]: [[0, 0], [0, 1], [1, 0], [1, 1]]
Python使⽤lambda表⽰匿名函数。匿名函数体只能是表达式。⽐如:
>>> add=lambda x, y : x + y
>>> add(3,2)
5
Python使⽤y if cond else x表⽰条件表达式。意思是当cond为真时,表达式的值为y,否则表达式的值为x。相当于C++和Java ⾥的cond?y:x。
作用是什么Python区分列表(list)和元组(tuple)两种类型。list的写法是[1,2,3],⽽tuple的写法是(1,2,3)。可以改变list中的元素,⽽不能改变tuple。在某些情况下,tuple的括号可以省略。tuple
对于赋值语句有特殊的处理。因此,可以同时赋值给多个变量,⽐如:
>>> x, y=1,2#同时给x,y赋值,最终结果:x=1, y=2
特别地,可以使⽤以下这种形式来交换两个变量的值:
二郎山隧道全长>>> x, y=y, x #最终结果:y=1, x=2
Python使⽤'(单引号)和"(双引号)来表⽰字符串。与Perl、Unix Shell语⾔或者Ruby、Groovy等语⾔不⼀样,两种符号作⽤相同。⼀般地,如果字符串中出现了双引号,就使⽤单引号来表⽰
字符串;反之则使⽤双引号。如果都没有出现,就依个⼈喜好选择。出现在字符串中的\(反斜杠)被解释为特殊字符,⽐如\n表⽰换⾏符。表达式前加r指⽰Python不解释字符串中出现的\。这种写法通常⽤于编写正则表达式或者Windows⽂件路径。
Python⽀持列表切割(list slices),可以取得完整列表的⼀部分。⽀持切割操作的类型有str, bytes, list, tuple等。它的语法是... [left:right]或者...[left:right:stride]。假定nums 变量的值是[1, 3, 5, 7, 8, 13, 20],那么下⾯⼏个语句为真:
nums[2:5] == [5, 7, 8] 从下标为2的元素切割到下标为5的元素,但不包含下标为5的元素。
nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最后⼀个元素。
nums[:-3] == [1, 3, 5, 7] 从最开始的元素⼀直切割到倒数第3个元素。
nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改变新的列表不会影响到nums。
nums[1:5:2] == [3, 7] 从下标为1的元素切割到下标为5的元素但不包含下标为5的元素,且步长为2。
4. 函数
Python的函数⽀持递归、默认参数值、可变参数,但不⽀持函数重载。为了增强代码的可读性,可以在函数后书写“⽂档字符串”(Documentation Strings,或者简称docstrings),⽤于解释函数的作⽤、参数的类型与意义、返回值类型与取值范围等。可以使⽤内置函数help()打印出函数的使⽤帮助。⽐如:
>>> def randint(a, b):
... "Return random integer in range [a, b], including both end points."...
>>> help(randint)
Help on function randint in module __main__:
randint(a, b)
Return random integer inrange[a, b], including both end points.
5. 对象的⽅法
对象的⽅法是指绑定到对象的函数。调⽤对象⽅法的语法是hod(arguments)。它等价于调⽤
class Fish:
def eat(self, food):
if food is not None:玉面郎君杨戬
self.hungry=False
class User:
def__init__(myself, name):
myself. name= name
#构造Fish的实例:
f=Fish()
#以下两种调⽤形式是等价的:
Fish.eat(f,"earthworm")
f.eat("earthworm")
u = User('username')
print(u .name)
安装mysql数据Python认识⼀些以“__”开始并以“__”结束的特殊⽅法名,它们⽤于实现运算符重载和实现多种特殊功能。
6. 类型
Python采⽤动态类型系统。在编译的时候,Python不会检查对象是否拥有被调⽤的⽅法或者属性,⽽是直⾄运⾏时,才做出检查。所以操作对象时可能会抛出异常。不过,虽然Python采⽤动态类型系统,它同时也是强类型的。Python禁⽌没有明确定义的操作,⽐如数字加字符串。
与其它⾯向对象语⾔⼀样,Python允许程序员定义类型。构造⼀个对象只需要像函数⼀样调⽤类型即可,⽐如,对于前⾯定义的Fish类型,使⽤Fish()。类型本⾝也是特殊类型type的对象(type类型本⾝也是type对象),这种特殊的设计允许对类型进⾏反射编程。
Python内置丰富的数据类型。与Java、C++相⽐,这些数据类型有效地减少代码的长度。下⾯这个列表简要地描述了Python 内置数据类型(适⽤于Python 3.x):
除了各种数据类型,Python语⾔还⽤类型来表⽰函数、模块、类型本⾝、对象的⽅法、编译后的Python代码、运⾏时信息等等。因此,Python具备很强的动态性。
7. 数学运算
Python使⽤与C、Java类似的运算符,⽀持整数与浮点数的数学运算。同时还⽀持复数运算与⽆穷位数(实际受限于计算机的能⼒)的整数运算。除了求绝对值函数abs()外,⼤多数数学函数处于math和cmath模块内。前者⽤于实数运算,⽽后者⽤于复数运算。使⽤时需要先导⼊它们,⽐如:
>>> import math
>>> print(math.sin(math.pi/2))
1.0
fractions模块⽤于⽀持分数运算;decimal模块⽤于⽀持⾼精度的浮点数运算。
Python定义求余运⾏a % b的值处于开区间[0, b)内,如果b是负数,开区间变为(b, 0]。这是⼀个很常见的定义⽅式。不过其实它依赖于整除的定义。为了让⽅程式:b * (a // b) + a % b = a恒真,整除运⾏需要向负⽆穷⼩⽅向取值。⽐如7 // 3的结果是2,⽽(-7) // 3的结果却是-3。这个算法与其它很多编
程语⾔不⼀样,需要注意,它们的整除运算会向0的⽅向取值。Python允许像数学的常⽤写法那样连着写两个⽐较运⾏符。⽐如a < b < c与a < b and b < c等价。C++的结果与Python不⼀样,⾸先它会先计算a < b,根据两者的⼤⼩获得0或者1两个值之⼀,然后再与c进⾏⽐较。
希望本⽂所述对⼤家Python程序设计有所帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论