Python编程基础
Posted 多鱼的夏天
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python编程基础相关的知识,希望对你有一定的参考价值。
1 Introduction
1.1 Python 简介
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
简单来说,Python是一门编程语言,帮助我们更好的与计算机沟通,功能全面、易学易用、可拓展语言,所以说,人生苦短,我学Python。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是一种解释型高级语言:
这意味着开发过程中没有了编译这个环节。类似于php和Perl语言。Python 是交互式语言:
这意味着,您可以在一个Python提示符,直接互动执行写你的程序。Python 是面向对象语言:
这意味着Python支持面向对象的风格或代码封装在对象的编程技术。Python 是初学者的语言:
Python 对初级程序员而言,是一种伟大的语言,开发代码量少,模块扩展库种类繁多,所以它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。
扩展:编译型与解释型的原理
- 编译型:编译器将源代码逐条编译成机器代码,任何一条语句 有错,都不能通过编译,最终形成目标代码,以后每次执行只执 行目标代码即可,因此执行速度快。
- 解释型:解释器逐条解释源代码,成功一条就执行一 条,每次执行时都需要解释,所以速度稍慢
1.2 Python发展历史
- Python的作者是荷兰人Guido von Rossum(龟叔)
- 1982年,Guido从阿姆斯特丹大学(University of Amsterdam)获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿。
- 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器。Python来自Guido所挚爱的电视剧Monty Python’s Flying Circus (BBC1960-1970年代播放的室内情景幽默剧,以当时的英国生活为素材)。他希望这个新的叫做Python的语言,能实现他的理念(一种C和shell之间,功能全面,易学易用,可拓展的语言)。Guido作为一个语言设计爱好者,已经有过设计语言的(不很成功)的尝试。这一次,也不过是一次纯粹的hacking行为。
- Python正式诞生于1991年
- Python目前有两个版本,Python2和Python3,代码不完全兼容
- 源文件.py文件猴后缀名
- Python的解释器如今有多个语言实现,通常用的是Cpython或者IPython(官方版本的C语言实现),其他还有Jpython(Java平台)、IronPython(NET和Mono平台)、PyPy(Python实现)
扩展:Python2还是Python3
- py2.7是2.x系列的最后一个版本,已经停止开发,不再增加新功能。2020年终止支持。所有的最新的标准库的更新改进,只会在3.x的版本里出现。Guido决定清理Python2.x ,并且不再兼容旧版本。
- 最大的一个改变就是使用Unicode作为默认编码。Pyhton2.x中直接写中文会报错,Python3中可以直接写中文了。从开源项目看,支持py3的比例已经大大提高,知名的项目一般都支持py2.7和py3+。
- py3比py2更规范统一、去掉了没必要的关键字Python3.x还在持续改进。
- 所以我们还是推荐大家使用Python3.x。
2 Python的安装与使用
2.1 Python环境搭建
-
Python可应用于多平台包括Windows、 Linux/Unix 和 Mac OS。
-
Python有不同的搭建环境包括Python解释器(CPython)、编辑器(()IDLE,PyCharm,Sublime Text)、Python软件包管理系统(pip)
2.1.1 环境下载
-
Python最新源码,解释器环境等最新下载
Python官网:http://www.python.org/
-
Python 权威使用技术文档等最新下载
Python文档下载地址:http://www.python.org/doc/
2.1.2 Python编辑器
- Ipython IDLE
- Vim和macVim(linux,unix,macOSX)
- Eclipse+pyDEV
- Xcode(macOSX)
- Notepad++(win)
- Sublime Text(win,macOSX,linux,unix)
- PyCharm(全平台)
2.1.3 Unix & Linux 平台安装 Python:(源码式安装)
- 以下为在Unix & Linux 平台上安装 Python 的简单步骤:
- 打开WEB浏览器访问http://www.python.org/download/
- 选择适用于Unix/Linux的源码压缩包。
- 下载及解压压缩包。
- 如果你需要自定义一些选项修改Modules/Setup
- 执行 ./configure 脚本
- make
- make install
- 执行以上操作后,Python会安装在 /usr/local/bin 目录中,Python库安装在/usr/local/lib/pythonXX,XX为你使用的Python的版本号。
2.1.4 通过ubuntu官方的apt工具包安装
$ sudo apt-get install python
$ sudo apt-get install python2.7
$ sudo apt-get install python3.7
2.1.5 Mac安装Python3
$ brew search python
$ brew install python3
//在/usr/local/Cellar/这个目录下
2.1.6 windows下直接安装
① 首先访问http://www.python.org/download/ 下载最新环境
② 然后选择最新版本,并适用于自己系统的环境
③ 下载后,双击安装,选择“Install Now”默认安装,但一定勾选“Add Python 3.7 toPATH”
④ 如果没有添加环境,在安装之后,配置环境
3 Python的运行
运行Python的三种方式
-
交互式解释器
-
命令行运行Python源代码
-
使用编辑器或集成开发环境(IDE)例如:pycharm
3.1 交互式解释器
- 你可以通过命令行窗口进入python并开在交互式解释器中开始编写Python代码。
- 你可以在Unix,DOS或任何其他提供了命令行或者shell的系统进行python编码工作。
$ python # Unix/Linux
或者
C:>python # Windows/DOS
- 以下为Python命令行参数:
选项 | 描述 |
---|---|
-d | 在解析时显示调试信息 |
-O | 生成优化代码 ( .pyo 文件 ) |
-S | 启动时不引入查找Python路径的位置 |
-V | 输出Python版本号 |
-X | 从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时。 |
-c cmd | 执行 Python 脚本,并将运行结果作为 cmd 字符串。 |
file | 在给定的python文件执行python脚本。 |
3.2 命令行脚本
- 在记事本中输入下列代码,另存为test.py文件
import requests
response=requests.get(https://img-bss.csdnimg.cn/201906261028104896.png)
pic = open('photo.jpg','wb')
pic.write(response.content)
- 在你的应用程序中通过引入解释器可以在命令行中执行Python脚本,如下所示:
$ python test.py # Unix/Linux
或者
C:>python test.py # Windows/DOS
3.3 集成开发环境
- PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。
- PyCharm 功能 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……
- PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/
3.3.1 Pycharm的基本使用
下载安装后,新建一个项目
选择Python解释器,并确定项目名称
新建一个Python源代码文件
给源文件起名字
运行源文件
得到运行结果
4 Python基础语法
4.1 Python注释
Python中的注释有单行注释和多行注释:
- python中单行注释采用 # 开头。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py
# 第一个注释
print("Hello, Python!") # 第二个注释
输出结果:
Hello, Python!
注释可以在语句或表达式行末:
name = "Madisetti" # 这是一个注释
- python 中多行注释使用三个单引号(’’’)或三个双引号(""")。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py
'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''
"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""
4.2 Python语法格式-缩进
- python最具特色的就是使用缩进来表示代码块,不需要使用大括号({})。
- 缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
- 缩进强迫大家写出格式化的代码
- 当语句以’:’结尾时,缩进的语句视为代码块
- 约定俗成管理,4个空格为一个缩进
- Python大小写敏感
实例如下:
if True:
print ("True")
else:
print ("False")
- 以下代码最后一行语句缩进数的空格数不一致,会导致运行错误:
if True:
print ("Answer")
print ("True")
else:
print ("Answer")
print ("False") # 缩进不一致,会导致运行错误
- 以上程序由于缩进不一致,执行后会出现类似以下错误:
File "test.py", line 6
print ("False") # 缩进不一致,会导致运行错误
^
IndentationError: unindent does not match any outer indentation level
多行语句
- Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:
total = item_one + \\
item_two + \\
item_three
- 在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(),例如:
total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
空行
- 函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
- 空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
- 记住:空行也是程序代码的一部分。
4.3 输入和输出:
input()输入:
- input()的小括号中放入的是,提示信息,用来在获取数据之前给用户的一个简单提示
- input()在从键盘获取了数据以后,会存放到等号右边的变量中
- input()会把用户输入的任何值都作为字符串来对待
- 注意:在python2中还有一个raw_input()输入,但到python3中没有了
#!/usr/bin/python3
str = input("请输入:");
print ("你输入的内容是: ", str)
- 这会产生如下的对应着输入的结果:
请输入:Hello Python!
你输入的内容是: Hello Python!
Print()输出:
- print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":
#!/usr/bin/python3
x="a"
y="b"
# 换行输出
print( x )
print( y )
print('---------')
# 不换行输出
print( x, end=" " )
print( y, end=" " )
print()
# 同时输出多个变量
print(x,y)
format的格式化函数(了解)
- 格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
- 基本语法是通过 {} 和 : 来代替以前的 % 。
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
>>> print("网站名:{name}, 地址 {url}".format(name="百度", url="www.baidu.com")) #指定参数名
'网站名:百度, 地址 www.baidu.com'
>>>site = {"name": "百度", "url": "www.baidu.com"}
>>>print("网站名:{name}, 地址 {url}".format(**site)) # 通过字典设置参数
'网站名:百度, 地址 www.baidu.com'
>>>my_list = ['百度', 'www.baidu.com']
>>>print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的 通过列表索引设置参数
'网站名:百度, 地址 www.baidu.com'
>>> print("{:.2f}".format(3.1415926)); #数字格式化
3.14
数字 | 格式 | 输出 | 描述 |
---|---|---|---|
3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 |
3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 |
-1 | {:+.2f} | -1.00 | 带符号保留小数点后两位 |
2.71828 | {:.0f} | 3 | 不带小数 |
5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) |
5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) |
10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4) |
1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 |
0.25 | {:.2%} | 25.00% | 百分比格式 |
1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
13 | {:10d} | 13 | 右对齐 (默认, 宽度为10) |
13 | {:<10d} | 13 | 左对齐 (宽度为10) |
13 | {:^10d} | 13 | 中间对齐 (宽度为10) |
11 | ‘{:b}’.format(11) ‘{:d}’.format(11) ‘{: o}’.format(11) ‘{:x}’.format(11) ‘{:#x}’.format(11) ‘{:#X}’.format(11) | 1011 11 13 b 0xb 0XB | 进制 |
Python中的变量
- Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
- 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
- 等号(=)用来给变量赋值。
- 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:
- 实例(Python 3.0+)
#!/usr/bin/python3
counter = 100 # 整型变量
miles = 1000.0 # 浮点型变量
name = "demo" # 字符串
print (counter)
print (miles)
print (name)
- 执行以上程序会输出如下结果:
100
1000.0
demo
多个变量赋值
- Python允许你同时为多个变量赋值。例如:
a = b = c = 1
-
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
-
您也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "demo"
- 以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 “demo” 分配给变量 c。
变量的命名
- 在一个代码段内,尽量不要重名
- 变量名由字母、数字、下划线组成,但不能以数字开头
- Python 中的标识符是区分大小写
- Python保留字: 保留字即关键字,我们不能把它们用作任何变量名称
- 变量命名要符合PEP8规范,驼峰命名法
例如:
teacherName = 'yh'
stu_self = MiddleStudent( 'yh',20)
标识符
-
在
Python
里,标识符: 由字母、数字、下划线组成,但不能以数字开头。 -
Python 中的标识符是区分大小写的。
-
特殊标识符:
- 以下划线开头的标识符是有特殊意义的。以单下划线开头
_foo
的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import *
而导入; - 以双下划线开头的
__foo
代表类的私有成员;以双下划线开头和结尾的__foo__
代表 Python 里特殊方法专用的标识,如__init__()
代表类的构造函数。
- 以下划线开头的标识符是有特殊意义的。以单下划线开头
-
python保留字: 保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue',
'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global',
'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'if',
'return','try', 'while', 'with', 'yield']
5 数据类型
5.1 内置的基本数据类型
- Python3中,只有一种整型类型int
- 内置的type()函数可以查询变量所指的对象类型
- 也可以使用内置的isinstance()函数来判断
- Python3中True的值是1,False的值是0
- 浮点只有单精度float,没有double双精度
5.2 Number 数字
- Python3 支持 int、float、bool、complex(复数)。
- 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
- 像大多数语言一样,数值类型的赋值和计算都是很直观的。
- 内置的 type() 函数可以用来查询变量所指的对象类型。
>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
- 此外还可以用 isinstance 来判断:
>>>a = 111
>>> isinstance(a, int)
True
>>>
- isinstance 和 type 的区别在于:
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
- 区别就是:
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型。
注意:在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。
到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。
- 当你指定一个值时,Number 对象就会被创建:
var1 = 1
var2 = 10
- 您也可以使用del语句删除一些对象引用。
- del语句的语法是:
- del var1[,var2[,var3[…,varN]]]]
- 您可以通过使用del语句删除单个或多个对象。例如
del var
del var_a, var_b
整数的进制:
# 输出其他进制数值
>>> bin(255) #255的二进制
'0b11111111'
>>> oct(255) #255的八进制
'0o377'
>>> hex(255) #255的十六进制
'0xff'
>>> a=0b10 #赋值二进制数值
>>> a
2
>>> a=0o10 #赋值八进制数值
>>> a
8
>>> a=0x10 #赋值十六进制数值
>>> a
16
5.2 字符串
-
Python中字符串三种标示
- 使用单引号(’) str=‘this is string’
- 使用双引号(") str=“this is string”
- 使用三引号(’’’) str=’’‘this is string’’’
-
字符串切片截取语法如下:
-
变量[起始下标:结束下标:步进]
-
反斜杠可以转义特殊字符
-
常用字符串操作函数 len(),replace(),index(),find(),split()等
-
加号 (+) 是字符串的连接符, 星号 (*) 表示复制当前字符串,紧跟的数字为复制的次数。实例如下:
#!/usr/bin/python3
str = 'zhangsan'
print (str) # 输出字符串
print (str[0:-1]) # 输出第一个到倒数第二个的所有字符
print (str[0]) # 输出字符串第一个字符
print (str[2:5]) # 输出从第三个开始到第五个的字符
print (str[2:]) # 输出从第三个开始的后的所有字符
print (str * 2) # 输出字符串两次
print (str + "TEST") # 连接字符串
- Python 使用反斜杠()转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个
r
,表示原始字符串:
>>> print('Ru\\noob')
Ru
oob
>>> print(r'Ru\\noob')
Ru\\noob
>>>
- 另外,反斜杠()可以作为续行符,表示下一行是上一行的延续。也可以使用 “”"…""" 或者 ‘’’…’’’ 跨越多行。
- 注意,Python 没有单独的字符类型,一个字符就是长度为1的字符串。
>>>word = 'Python'
>>> print(word[0], word[5])
P n
>>> print(word[-1], word[-6])
n P
- 与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm’会导致错误。
- 注意:
- 反斜杠可以用来转义,使用
r
可以让反斜杠不发生转义。 - 字符串可以用+运算符连接在一起,用
*
运算符重复。 - Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
- Python中的字符串不能改变。
- 反斜杠可以用来转义,使用
5.3 列表
-
List(列表)是一种有序集合,可以随时添加和删除其中元素
-
列表的元素可以不同
-
列表同样支持切片截取语法如下:
- 变量[起始下标:结束下标:步进]
-
列表格式[“yh”,“micheal”,“jack”],[]之间,元素逗号隔开
-
索引值从0开始,-1代表末尾
-
使用(+)可以连接两个列表,(*)是重复操作
#!/usr/bin/python3
list = [ 'abcd', 786 , 2.23, 'demo', 70.2 ]
tinylist = [123, 'demo']
print (list) # 输出完整列表
print (list[0]) # 输出列表第一个元素
print (list[1:3]) # 从第二个开始输出到第三个元素
print (list[2:]) # 输出从第三个元素开始的所有元素
print (tinylist * 2) # 输出两次列表
print (list + tinylist) # 连接列表
-
以上实例输出结果:
['abcd', 786, 2.23, 'demo', 70.2] abcd [786, 2.23] [2.23, 'demo', 70.2] [123, 'demo', 123, 'demo'] ['abcd', 786, 2.23, 'demo', 70.2, 123, 'demo']
-
与Python字符串不一样的是,列表中的元素是可以改变的:
>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 将对应的元素值设置为 []
>>> a
[9, 2, 6]
-
List内置了有很多方法,例如append()、pop()等
-
注意
- List写在方括号之间,元素用逗号隔开。
- 和字符串一样,list可以被索引和切片。
- List可以使用+操作符进行拼接。
- List中的元素是可以改变的。
5.4 元组
- Tuple(元组)与列表类似,不同之处在于元组的元素不能修改
- 元组写在小括号()里,元素之 间用逗号隔开以上是关于Python编程基础的主要内容,如果未能解决你的问题,请参考以下文章