Python基础语法

348 阅读10分钟

这是我参与8月更文挑战的第16天,活动详情查看:8月更文挑战

交互式编程

交互式编程不需要创建py文件,是通过 Python 解释器的交互模式进来编写代码,cmd 进入在命令行中输入 Python 命令即可启动交互式编程,提示窗口如下:

C:\Users\Administrator>python
Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]
 on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

在 python 提示符中输入以下文本信息,然后按 Enter 键查看运行效果:

>>> print("Hello, Python!")
Hello, Python!

脚本式编程

首先使用文本编辑器编写py文件,在通过 python 命令调用解释器开始执行py文件,直到执行完毕。当文件执行完成后,解释器不再有效。

让我们编写一个简单的 Python 程序。所有 Python 文件将以 .py 为扩展名。将以下的源代码拷贝至 first.py 文件中。

print("Hello, Python!")

使用python命令执行 first.py文件

$ python test.py
Hello, Python!

行和缩进

学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号{}来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。

缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。如下所示:

if True:
    print("True")
else:
    print("False")

以下代码将会执行错误:

if True:
    print("Answer")
    print("True")
else:
    print("Answer")
    # 没有严格缩进,在执行时会报错
  print("False")

执行以上代码,会出现如下错误提醒:

$ python test.py  
  File "test.py", line 5
    if True:
    ^
IndentationError: unexpected indent

IndentationError: unexpected indent 错误是 python 编译器是在告诉你 "Hi,老兄,你的文件里格式不对了,可能是 tab 和空格没对齐的问题",所有 python 对格式要求非常严格。

如果是 IndentationError: unindent does not match any outer indentation level错误表明,你使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改为一致即可。

因此,在 Python 的代码块中必须使用相同数目的行首缩进空格数。 建议你在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用!!

题外话:看过一个文章说使用空格键的程序员比Tab键的程序员赚的多 http://blog.csdn.net/lunaqi/article/details/74454425

多行语句

为了提高代码的阅读性,Python 语句中一般以新行作为为语句的结束符。也就是说 一行 只写 一条语句。如果一条语句过长,那么就可能会导致在阅读代码时不是很方便。怎么办?

我们可以使用斜杠( \ )将一行的语句分为多行显示,如下所示:

total = item_one + \
        item_two + \
        item_three

语句中包含 [], {} ()括号就不需要使用多行连接符。如下实例:

days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']

Python 引号

Python 可以使用引号( ' )、双引号(")、三引号( '''""" ) 来表示字符串,引号的开始与结束必须的相同类型的。

其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释

word = 'word'
sentence = "这是一个句子。"
paragraph = """这是一个段落。
包含了多个语句"""

Python注释

python中单行注释采用 # 开头。

# 第一个注释
print("Hello, Python!")  # 第二个注释

输出结果:

Hello, Python!

注释可以在语句或表达式行末:

name = "Madisetti" # 这是一个注释

python 中多行注释使用三个单引号(''')或三个双引号(""")。

'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''

"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""

Python空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是 Python 语法的一部分。书写时不插入空行,Python 解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

记住:空行也是程序代码的一部分。

同一行显示多条语句

Python 可以在同一行中使用多条语句(但不推荐),语句之间使用分号(;)分割,以下是一个简单的实例:

str='a' ; str1='b' ; print(str) ; print(str1) #注意空格

执行以上代码,输入结果为:

a
b

输出

用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出'hello, world',用代码实现如下:

print('hello, world')

print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:

print('The quick brown fox', 'jumps over', 'the lazy dog')
The quick brown fox jumps over the lazy dog

print()也可以打印整数,或者计算结果:


print(300)
300
print(100 + 200)
300

因此,我们可以把计算100 + 200的结果打印得更漂亮一点:

print('100 + 200 =', 100 + 200)
100 + 200 = 300

注意,对于100 + 200,Python 解释器自动计算出结果 300,但是,'100 + 200 ='是字符串而非数学公式,Python 把它视为字符串,请自行解释上述打印结果。

输入

现在,已经可以用print()输出你想要的结果了。但是,如果要让用户从电脑输入一些字符怎么办?Python 提供了一个input(),可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:

name = input()
jerry

当你输入name = input()并按下回车后,Python 交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。

输入完成后,不会有任何提示,Python 交互式命令行又回到>>>状态了。那我们刚才输入的内容到哪去了?答案是存放到name变量里了。可以直接输入name查看变量内容:

name
'jerry'

要打印出name变量的内容,除了直接写name然后按回车外,还可以用print()函数:

print(name)
jerry

有了输入和输出,我们就可以把上次打印'hello, world'的程序改成有点意义的程序了:

name = input()
print('hello,', name)

运行上面的程序,第一行代码会让用户输入任意字符作为自己的名字,然后存入name变量中;第二行代码会根据用户的名字向用户说 hello,比如输入 lidao

python hello.py
lidao
hello, lidao

但是程序运行的时候,没有任何提示信息告诉用户:“嘿,赶紧输入你的名字”,这样显得很不友好。幸好,input()可以让你显示一个字符串来提示用户,于是我们把代码改成:

name = input('please enter your name: ')
print('hello,', name)

再次运行这个程序,你会发现,程序一运行,会首先打印出please enter your name:,这样,用户就可以根据提示,输入名字后,得到 hello, xxx 的输出:

python hello.py
please enter your name: lidao
hello, lidao

每次运行该程序,根据用户输入的不同,输出结果也会不同。在命令行下,输入和输出就是这么简单。 input()print()是在命令行下面最基本的输入和输出,但是,用户也可以通过其他更高级的图形界面完成输入和输出,比如,在网页上的一个文本框输入自己的名字,点击“确定”后在网页上看到输出信息。

标识符

Python中的标识符是用于识别变量、函数、类、模块以及其他对象的名字。

命名规则:

  1. 标识符可以包含字母、数字及下划线(_),但是必须以一个非数字字符开始。
  2. 字母仅仅包括ISO-Latin字符集中的 A–Z 和 a–z。
  3. 标识符对大小写敏感的,因此 FOO foo 是两个不同的对象。
  4. 特殊符号,如$、%、@等,不能用在标识符中。 以下划线开头的标识符是有特殊意义的。以单下划线开头 foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入; 以双下划线开头的 __foo 代表类的私有成员;以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 _init() 代表类的构造函数。 另外,如ifelsefor 等单词是保留字,也不能将其用作标识符。下面的表列出了所有的保留字符及其说明:

保留字

  • and 用于表达式运算,逻辑与操作
  • as 用于类型转换
  • assert 断言,用于判断变量或条件表达式的值是否为真
  • break 中断循环语句的执行
  • class 用于定义类
  • continue 继续执行下一次循环
  • def 用于定义函数或方法
  • del 删除变量或序列的值
  • elif 条件语句,与if 、 else结合使用
  • else 条件语句,与if 、 elis结合使用。也用于异常和循环语句
  • except except包含捕获异常后的操作代码块,与try、finally结合使用
  • exec 用于执行python语句
  • for for循环语句
  • finally 用于异常语句,出现异常后,始终要执行finally包含的代码块。与try、except结合使用
  • from 用于导入模块,与import结合使用
  • global 定义全局变量
  • if 条件语句,可与elif、else结合使用
  • import 用于导入模块,可与from结合使用
  • in 判断变量的值是否在序列中
  • is 判断变量的值是否为某个类的实例
  • lambda 定义匿名函数
  • not 用于表达式运算,逻辑非操作
  • or 用于表达式运算,逻辑或操作
  • pass 表示空的类、方法或函数的占位符
  • print 打印语句
  • raise 异常抛出操作
  • return 指定函数的返回值
  • try try包含可以出现异常的语句,与except、finally结合使用
  • while while循环语句
  • with 简化python语句
  • yield 用于依次从函数返回值

变量

什么是变量?请回忆初中数学所学的代数基础知识:

设正方形的边长为a,则正方形的面积为a x a。把边长a看做一个变量,我们就可以根据a的值计算正方形的面积,比如: 若a=2,则面积为a x a = 2 x 2 = 4; 若a=3.5,则面积为a x a = 3.5 x 3.5 = 12.25。 在 Python 中,变量用来存储数据。比如正方形的边长实际值 2 和 3.5。

在实际开发时,如果有数据要被变量存储起来的话,那么就定义变量名,然后赋值相应的数据。 每个变量都包括变量名称和数据这些信息。 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,使用等号(=)用来给变量赋值。 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:

counter = 100   # 赋值整型变量
miles = 1000.0  # 浮点型
name = "lidao" # 字符串

print(counter)
print(miles)
print(name)

以上实例中,100,1000.0 和 "lidao" 分别赋值给countermilesname变量。 执行以上程序会输出如下结果:

100
1000.0
lidao

多个变量赋值

Python 允许你同时为多个变量赋值。例如: a = b = c = 1 以上实例,创建一个整型数据,值为 1,三个变量都存储同一数据。 当然也可以为多个数据指定多个变量。例如: a, b, c = 1, 2, "jingjing"jingjing 以上实例,两个整型数据1 和 2的分配给变量 a b,字符串对象"jingjing" 分配给变量 c

变量名称

在实际开发中,理论上变量名只要按照标识符命名规则可以随意去命名,只要保证不产生冲突即可,但是为了使我们书写出来的代码具有一定的易读特性,因此在定义变量名时,尽可能让它具有实际意义。

# 定义身高变量
high = 175
# 定义名字变量
name = 'jerry'
# 定义年龄变量
age = 19