python 语言学习背景
在编程的世界里,没有最好的语言,所有编程语言都有其存在的道理,他们都有各自擅长的领域和适用性。python是一门C-like语言, python 语法是非常精简的。但Python3并不完全兼容Python2,所以在学习的时候要注意自己所学习的是否为自己需要的。
安装Python非常容易python官网有python的各个版本及官方教程。可以根据自己的系统和需要进行下载。
本文将主要学习Python3的基础语法学习
下载安装完成打开IDLE,IDLE是一个Python的shell(外壳),就是一个通过输入文本与程序交互的途径。像Windows的cmd窗口,像Linux或Mac的Terminal命令窗口,他们都是Shell,利用它们,就可以给系统下达命令。同时利用IDLE这个shell与Python进行互动。
Hello world
python有两种变成方式
交互式编程
不需要创建脚本文件,是通过Python解释器的交互模式进行编写代码。在IDLE中直接输入python命令即可启动交互式编程。
在Linux终端只需要输入python
命令即可启动交互式编程。
脚本式编程
通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效。所有 Python 文件将以.py
为扩展名。
python的中文编码
python中默认的编码格式是ASCII格式;在没有修改编码格式时无法正确打印汉字,所以会在读取中文中报SyntaxError: Non-ASCII character '\xe4' in file test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
解决方法很简单只需要在文件开头加上
# -*- coding :UTF-8 -*-
或者# coding=utf-8
Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。
注意:如果你使用编辑器,同时需要设置 py 文件存储的格式为 UTF-8,否则会出现类似以下错误信息:
SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0: invalid continuation byte
>>>
这个提示符含义是:python已经准备好了,可以尝试输入Python的第一个指令了。
print("hello World!")#注意并不是C语言的printf
#是python的单行注释
print(5+3)
print("welcome to "+ "python3")
print("I Love Python\n"*3)
行和缩进
python基础
语法学习
缩进
学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
缩进是python的灵魂,缩进的严格要求使得python代码非常精简并且有层次。在python里必须对待代码缩进十分谨慎。因为没有正确使用缩进,代码所做的事情可能和希望相差甚远。
Tab
按键的作用:
- 缩进
- 命令提示补全
- 在 Python 的代码块中必须使用相同数目的行首缩进空格数。
- 建议你在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用
如果在正确的地方点上:
,IDLE会在下一行自动进行缩进。
IndentationError: unindent does not match any outer indentation level
错误表明,你使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改为一致即可。IndentationError: unexpected indent
错误, 则 python 编译器是在告诉你"Hi,老兄,你的文件里格式不对了,可能是tab和空格没对齐的问题",所有 python 对格式要求非常严格。
多行语句
python语句中一般以新行作为语句的结束符。
但我们可以使用斜杠\
将一行的语句分为多行显示如下所示:
total=item_one + \
item_two +\
item_three
语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
days=['Monday','tuesday','Wednesday','Thursday','Friday']
print默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号,
BIF
BIF就是Build-in functions内置函数的意思。其实就是方便程序员快速编写脚本程序,Python提供了非常丰富的内置函数,只需要直接调用即可。
- 在IDLE中输入
dir(__builtins__)
可以看到python提供的内置函数列表。
dir(__builtins__)
help()
这个BIF用于显示BIF的功能描述例如:
help(print)
python标识符
-
在 Python 里,标识符由字母、数字、下划线组成。
-
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
-
Python 中的标识符是区分大小写的。
-
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。
python保留字
- 下面的列表显示了在Python中的保留字,这些保留字不能用作常数或变数,或任何其他标识符名称。
- 所有 Python 的关键字只包含小写字母。
and | exec | not |
---|---|---|
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
Python 可以同一行显示多条语句,方法是用分号;
例如:
print("hello ");print("world")
teacher = "木子老师"
print(teacher)
变量之所以称之为变量是因为变量是可变的
x=3
x=5
y=8
z=x+y
print(z)
多个变量
python允许同时为多个变量赋值。例如:
a=b=c=1
也可以为多个对象指定多个变量,例如:
a,b,c=1,2,"john"#即a=1 b=2 c="john"
**作为一个优秀的程序员,请尽量给变量去一个专业一点的名字。**
### 字符串
Python 可以使用引号(` '` )、双引号(` " `)、三引号(` '''` 或 `""" `) 来表示字符串,引号的开始与结束必须的相同类型的。
其中三引号可以由多行组成,编写*多行文本的快捷语法*,常用于文档字符串,在文件的特定地点,被当做注释。
```python
word='word'
sentence="sentence"
paragraph="""这是一个段落。
包含了多个句子
也包含了个行。 """
a='I ';b="Love ";c='U';print(a+b+c)#字符串可以用单引号和双引号
word = ‘word’
字符串拼接
'5'+'8'#
- python的字符串有两种取值顺顺序
- 从左到右→索引默认从0开始的,最大范围是字符串长度至少1
- 从右到左←索引默认从-1开始的,最大范围是字符串开头
从字符串中获取一段子字符串可使用[头下标:尾下标]
来截取相应的字符串
- 其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
+[头下标:尾下标]
获取的子字符串包含头下标的字符,但不包含尾下标的字符。 - 加号
+
是字符串连接运算符,星号*
是重复操作
s='abcdef';
print(s[:]);print(s) #输出完整的字符串 abcdef
print(s[0]) #输出字符串的第一个字符 a
print(s[2:5]) #输出字符串第三至第六个之间的字符串 cdef
print(s[2:]) #输出从第三个字符开始的字符串 cdef
print(s*2) #输出字符串两次 abcdefabcdef
print(s+ "123") #输出连接的字符串 abcdef123
print(s[-1]) #输出字符串最右边的字符 f
print(s[-5:-1]) #输出字符串从右往左数的第5个到第二个 bcde
现在思考一个问题:print(s[-1:-3])
会输出什么?
可能有一部分人的想法和我一样字符串从右向左输出fe
其实正确答案是什么也没有输出虽然负数在字符串中是从右向左数的但其实在截取子字符串时还是需要头下标在尾下标的左边。即s[-3:-1]
输出为de
。这点值得思考注意一下。
python的列表截取可以接收第三个参数,参数作用就是截取的步长,
s='abcdef'
s[0:4:2] #索引0到索引4的位置并设置步长为2(间隔一个位置)来截取字符串
字符串的转义字符\
w='let\'s go'
print(w)
"let's go" #只要用上不同的引号表示字符串,python也不会误会
原始字符串
string=r'C:\now'
print(string)
#输出结果是'C:\\now'
无论是否为原始字符串,都不能以反斜杠\
作为结尾。
###多个语句构成代码组
缩进相同的一组语句构成一个代码块,我们称之为代码组。
像if、 while、def、和class这样复合语句,首行以关键字开始,以冒号(:
)结束,该行之后的一行或多行代码构成代码组。
我们将首行及其后面的代码组称为一个子句(clause)
如下实例
if expression :
suite
elif expression :
suite
else :
suite
多个变量赋值
python允许你同时为多个变量赋值。例如:
a=b=c=1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
您也可以为多个对象指定多个变量。例如:
a,b,c=1,2,"john"