python语句和语法

python程序结构:

1.程序由模块构成。

2.模块包含语句。

3.语句包含表达式。

4.表达式建立并处理对象。

python的语法实质上是有语句和表达式组成的。表达式处理对象并嵌套在语句中。语句还是对象生成的地方(例如,赋值语句中的表达式),有些语句会完全生成新的对象类型(函数、类等)。语句总是存在于模块中,而模块本身则又是由语句来管理的。

python语句:

语句 角色 例子
赋值 创建引用值 a,b,c = ‘good’,’bad’,’ugly’
调用 执行函数 log.write(‘hello,world’)
打印调用 打印对象 print(“hello world”)
if/elif/else 选择动作 if ‘print’ in text: print(text)
for/else 序列迭代 for x in mylist: print(x)
while/else 一般循环 while x>y: print(“hello”)
pass 空占位符 while True: pass
break 循环退出 while True:
    if exittest(): break
continue 继续下一次循环 while True:
    if skiptest(): continue
def 函数和方法 def f(a,b,c=1,*d):
    print(a+b+c+d[0])
return 函数返回结果 def f(a,b,c=1,*d):
    return a+b+c+d[0]
yield 生成器表达式 def gen(n):
    for i in n:yield i * 2
global 命名空间,全局变量 x = ‘old’
def function(x):
    global x,y,;x = ‘new’
nonlocal 局部变量(python3.0+) def outer():
    x = ‘old’
    def function():
        nonlocalx;n=’new’
import 模块访问,导入 import sys
from 模块属性访问 from sys import stdin
class 创建对象 class Subclass(Superclass):
    staticData = []
    def method(self): pass
try/except/finally 捕捉异常 try:
    action()
except:
    print(‘action error’)
raise 触发异常 raise EbdSearch(location)
assert 调试检查 assert x>y,’x  too small’
with/as 环境管理器 with open(‘data’) as myfile:
    process(myfile)
del 删除引用 del data[k]
del data[i:j]
del obj.attr
del variable

 

终止行就是终止语句

x = 1;

在python中,一般原则是,一行的结束会自动终止出现该行的语句.也就是可以省略分号.

x = 1
  • 一行的结束就是终止该行语句(没有分号).
  • 嵌套语句是代码块并且与实际的缩进相关(没有大括号).

虽然语句一般都是一行一个,但在python中也有可能出现某一行挤进多个语句情况,这时他们由分号隔开:

>>> a = 1;b = 2;print(a + b)
3

这时python中唯一需要分号的地方——作为语句界定符。

语句的另一个特殊规则基本可以让一个语句的范围横跨多行。为了能实现这一操作,只需要一对括号把语句括起来就可以了:括号(),方括号[],或者字典的大括号{}。任何括在这些符号里的程序代码都可横跨好几行。语句将一直运行,直到遇到包含闭合括号的哪一行。

>>> mylist = [111,
... 222,
... 333,
... 444]
>>> mylist
[111, 222, 333, 444]

括号可以包含一切的——因为任何表达式都可以包含在内。

x = (a  + b  +
    c  +  d)
if(A == 1 and
    b == 2 and
    c == 3):
    print('hello world')

还有一条老的规则也允许我们跨越数行——当上一行以反斜线结束时,可以在下一行继续:

X = A + B + \
    C + D

缩进

python复合语句采用缩进代码风格。一般为4个空格。

while (x > 0):
    ---1----
    ---2----
    ....

赋值语句\表达式和打印

  • 赋值语句建立对象引用值。赋值语句总是建立对象的引用值,而不是复制对象。因此,python变量更像指针,而不是数据存储区域。
  • 变量名在首次赋值时会被创建。python会在首次将值(即对象引用值)赋值给变量时创建其变量名,有些数据结构也会在赋值时创建(例如,字典中的元素,一些对象属性)。一旦赋值了,每当这个变量名出现在表达式时,就会被其所引用的值取代。
  • 变量名在引用前必须先赋值。使用尚未赋值的变量名将会引发异常。
  • 执行隐式赋值的一些操作。赋值语句会在许多情况下使用,模块导入、函数和类的定义、for循环变量以及函数参数全都是隐式赋值运算。

赋值语句的形式:

运算 解释
s = ‘hello’ 基本形式
s,h = ‘hello’,’world’ 元组赋值运算
[s,h] = [‘hello’,’world’] 列表赋值运算
a,b,c,d,e = ‘hello’ 序列赋值运算
a,*b = ‘hello’ 扩展的序列解包
a = b = ‘hello’ 多目标赋值运算
a += 42 增强赋值运算(相当于a = a + 42)
a,b,c = range(3) 生成器赋值运算

不允许出现过个带*好的变量赋值:

>>> a,*b,c,*d = 'helloworld'
  File "<stdin>", line 1
SyntaxError: two starred expressions in assignment

增强赋值语句:

x += y    x &= y    x -= y    x |= y
x *= y    x  ^= y    x /= y    x >>= y
x %= y    x <<= y    x **= y    x //= y
  • 程序输入减少
  • 左侧只需计算一次.在x += y中,x可以是复杂的对象表达式。在增强形式中,则只需计算一次。然而,在完整形式 x = x + y中,x出现两次,必须执行两次。因此增强赋值语句通常执行得更快。
  • 优化技术会自动选择。对于支持原处修改的对象而言,增强形式会自动执行原处的修改运算,而不是相比更慢速度的复制。
>>> L = [1,2,3,4]
>>> L += [5,6] #列表使用增强型赋值时,python会自动调用较快的extend方法,而不是使用较慢的“+”合并运算
>>> L
[1, 2, 3, 4, 5, 6]

变量命名规则

python中,当为变量名赋值时,变量名就会存在。但是,要遵循如下规则:

  • 语法:(下划线或字母)+(任意数目的字母、数字或下划线)
  • 区分大小写
  • 禁止使用保留字:

python3.0+保留字

False    class    finally    is    return
None    continue    for    lambda    try
True    def    from    nonlocal    while
and    del    global    not    with
as    elif    if    or    yield
assert    else    import    pass    break
except    in    raise

转载请注明出处:http://www.jlunlp.com/article/20230331/792996.html

随机推荐

  1. 使用python和mysql时,SQL语句中并未使用所有参数

    嗨,我正在做这个项目的python mysql,我初始化了数据库并尝试创建表记录,但似乎无法将数据加载到表中,这里的任何人可以帮助我解决这个问题吗?import mysql.connector mydb = mysql.connector....

  2. Python字符串标识:`is`和`in`语句

    我在运行时遇到了一些问题:# Shortened for brevity def _coerce_truth(word): TRUE_VALUES = (true,1,yes) FALSE_VALUES = (false,0...

  3. python3笔记七:break和continue语句

    一:学习内容 break语句 continue语句 二:break语句 1. 说明 作用:跳出for和while的循环注意:只能跳出距离它最近的那一层循环 2.举例1 for i in range(10): print(i) if...

  4. 如何使import语句在python2和python3上都有效

    我正在做一个从python 2到python 3的代码迁移。有一些代码是我没有迁移的,对于我迁移的代码来说是必要的,因此我需要一些import语句在两个版本上都能工作,但是包的名称被更改了,例如:import urlparse # Pyt...

  5. Try和except语句,Python

    这似乎是一个简单的问题,但我无法通过谷歌和阅读Stackoverflow找到答案。我的问题是,如何在变量上使用try语句并将其追加到列表中?在下面的示例中,我尝试使用pandas从文件列表中获取索引标签。我想把每一个都转换成一个变量,把它们...

  6. 与Python 2打印语句相比,Python 3.x中新的打印功能有何优势?

    我已经多次听到,print作为函数(3.x)比作为语句(2.x)更好。但为什么? 我之所以喜欢这样的声明,主要是因为它允许我少键入两个字符(即括号)。 我很想看到一些情况,其中打印语句只是不...

  7. Python条件语句和基本数据类型

    1、if基本语句 if 条件: 内部代码块 else: ...... 2、if支持嵌套 if 1 == 1: if 2 == 2: print('走一步') else: p...

  8. Python 3.6.1while语句和请求输入

    所以我是python 3的新手,我就是不明白这一点。好的,所以我想请求一个输入然后使用一个while循环。我想不断地询问用户,直到他们输入正确的integer.They不能选择一个小于0或大于22的整数。这就是我所拥有的:user_inpu...

  9. python for和else语句趣谈

    老婆给当程序员的老公打电话:“下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。”当晚,程序员老公手捧一个包子进了家门……老婆怒道:“你怎么就买了一个包子?”老公答曰:“因为看到了卖西瓜的。” 程序员买西瓜的笑话可能大部分读者都知道...

  10. 随机中断、传递和继续语句Python

    我尝试随机中断并传递循环,但random.choice([pass,break])就是不起作用,并且显示无效的语法。有什么建议吗?