新人全面学习了解Python
一篇文章告诉你python的一切,Know EveryThing!
本文旨在概述 Python 编程语言的所有关键点,力图用最简短、专注的语言去解释最重要、需要的主题。
阅读此文不需要具备任何先前的编程知识就可以很快掌握所有必需的概念。
欢迎收藏、关注,点赞支持!pythontip 出品,Happy Coding!
接下来,通过介绍 Python 编程语言的热门讨论问题,逐步建立知识。
读完此文后,希望你将对Python有一个透彻的了解,能够使用任何 Python 库或者改善自己的Python程序。
下面包含 25 个关键主题,开始吧!少年,长文预警。
1. 介绍Python
什么是 Python?
- 解释型的、高级的、面向对象的、动态类型的脚本语言。
- 因此,通常会遇到运行时的错误。
为什么是 Python?
- Python 是最流行的语言,因为它更容易编码和理解。
- Python 是一种面向对象的编程语言,也可用于编写函数式代码。
- 它是一种合适的语言,可以在业务和开发人员之间架起桥梁。
- 与 C#/Java 等其他语言相比,将 Python 程序推向市场所需的时间更少。
- 有大量的python机器学习和分析包。
- 大量社区和书籍可用于支持 Python 开发人员。
- 几乎所有类型的应用程序,从预测分析到 UI,都可以用 Python 实现。
- 不需要声明变量类型。因此,实现 Python 应用程序会更快。
为什么不是 Python?
- Python 比 C++、C#、Java 慢。这是因为 Python 中缺少 Just In Time 优化器。
- Python 语法空白约束使新编码人员难以实现。
- Python 不像 R 那样提供高级统计功能。
- Python 不适合低级系统和硬件交互。
Python 是如何工作的?
下图说明了 python 如何在我们的机器上运行:
这里的关键是Interpreter,负责将高级Python语言翻译成低级机器语言。
Python的工作方式如下:
- 在安装包(库)的地方创建一个 Python 虚拟机。(我们可以将虚拟机视为容器。)
- 然后将 python 代码写入
.py
文件中 - CPython 将 Python 代码编译为字节码。此字节码用于 Python 虚拟机。
现在,这个虚拟机依赖于机器,但 Python 代码不是。
- 当你想执行字节码时,代码将在运行时被解释。然后代码将从字节码转换为机器代码。字节码不依赖于运行代码的机器。这使得 Python 与机器无关。
Python 字节码依赖于 Python 虚拟机,这使得 Python 机器独立。
因为Python是垮平台的,我们可以在一个操作系统中编写 Python 代码,将其复制到另一个操作系统中并简单地运行它。
2. 变量 —— 对象类型和范围
- 变量用来存储程序中需要使用和[或]需要更改的信息。此信息可以是整数、文本、集合等。
- 变量用于保存用户输入、程序的本地状态等。
- 变量有一个名称,以便它们可以在代码中被引用。
- 要理解的基本概念是 Python 中的一切都是对象。
Python 支持数字、字符串、集合、列表、元组和字典。这些是标准数据类型。我将详细解释它们中的每一个。
声明和赋值
myFirstVariable = 1
mySecondVariable = 2
myFirstVariable = "Hello You"
在上面的示例中,我们已将值1
赋值给变量myFirstVariable
。
请注意,可以将整数值 1
和字符串值“Hello You”分配给同一个 myFirstVariable
变量。
这是由于在 python 中,数据类型是动态的。 这也是 Python 被称为动态类型编程语言的原因。
如果要将相同的值分配给多个变量,则可以使用链式赋值:
myFirstVariable = mySecondVariable = 1
数字
- 支持整数、小数、浮点数。
value = 1 # 整数
value = 1.2 # float 带浮点数
- 支持常类型,它们的后缀为
L
,例如:9999999999999L
字符串
- 文本信息。
- 字符串是一个字符数组。
- 字符串用引号括表示。可以是单引号、双引号或三引号。
name = 'farhad'
name = "farhad"
name = """farhad"""
- 字符串是不可变的。一旦它们被创建,它们就不能改变,例如:
a = 'me'
# 试图改变a,将会报错
a[1]='y'
# It will throw a Type Error
- 当字符串变量被分配一个新值时,python内部会创建一个新对象来存储该值,然后创建了一个指向对象的引用/指针,并将该指针指配给该字符串变量,因此可以使用该变量。也可以将一个变量赋值给另一个变量。它所做的只是创建一个指向同一个对象的新指针。
a = 1 # 创建新对象并在那里存储1,创建新指针,指针将a连接到1
b = a # 没有创建新的对象,创建了将 b 连接到 1 的新指针。
局部变量和全局变量
局部变量
- 在函数中声明的变量只存在于函数块中。
- 在函数块之外,变量不可用。
def some_funcion():
TestMode = False
print(TestMode) #中断报错:因为外部不存在这个变量
在 Python 中,if-else
和 for/while
会创建全局变量:
for i in range(1, 11):
test_scope = "variable inside for loop"
print(test_scope)
#输出:variable inside for loop
is_python_awesome = True
if is_python_awesome:
test_scope = "Python is awesome"
print(test_scope)
#输出:Python is awesome
全局变量
- 可以从任何函数访问。它们存在于 main 框架中。
- 可以在函数之外声明一个全局变量。请务必注意,要为全局变量指配一个新值,必须使用global关键字:
TestMode = True
def some_function():
global TestMode
TestMode = False
some_function()
print(TestMode) #全局变量在函数中被修改了。返回 False
删除global TestMode行只会在 some_function()
函数中将变量设置为False
,但不影响全局变量。
注意:如果你想在多个模块之间共享一个全局变量,那么可以创建一个共享模块文件,例如 configuration.py 并在那里找到你的变量。最后,在使用者模块中导入共享模块。
输出变量类型
- 如果要查看变量的类型:
type('farhad')
# 返回: <type 'str'>
用逗号来定义多个变量
a, b ,c = 9,8,7 #三个数值变量
3. 运算操作
- 变量是可以运算的
数值运算
- Python 支持基本的
*
、/
、+
、-
- Python 也支浮点数除法
1//3 #返回 0
1/3 #返回 0.333
- 注意:除法的返回类型总是浮点数,如下:
a = 10/5
print(type(a)) #输出:float
- 此外,python 支持通过
*
运算符取幂:
2**3 = 2 * 2 * 2 = 8
- Python 也支持取模(余数)运算符:
7%2 = 1
还有一个 divmod
内置方法。它返回整数结果和余数:
print(divmod(10,3)) #返回(3,1)
字符串操作
连接字符串:
print('A' + 'B') # 结果为'AB'
记住字符串是一种不可变的数据类型,因此,连接字符串会创建一个新的字符串对象。
复制字符串:
print('A'*3) # 将重复 A 三遍:AAA
切片:
y = 'ABC'
y[:2] # 'AB'
y[1:] # 'BC'
y[:-2] # 'A'
y[-2:] # 'BC'
反转:
x = 'abc'
x[::-1] #输出:'cba'
倒序索引:
如果要从最后一个字符开始,请使用负索引。
y = 'abc'
print(y[:-1]) # 返回ab
数组中的每个元素都有两个索引:
- 从左到右,索引: 0,1,2
- 从右到左,索引: -1,-2,-3
- 因此,如果我们执行 y[0] 和 y[-len(y)] 那么两者都将返回相同的值:‘a’
y = 'abc'
y[0] # 返回 'a'
y[-len(y] # 返回 'a'
查找索引
name = 'farhad'
index = name.find('r') #index为2
name = 'farhad'
index = name.find('a', 2) # index为第二个a的索引,即4
对于模式匹配,请使用:
split()
:通过正则表达式将一个字符串拆分成一个列表sub()
:通过正则表达式替换匹配的字符串subn()
:通过正则表达式替换匹配的字符串并返回替换次数
转化
str(x)
: 转为字符串int(x)
: 转为整数float(x)
: 转为浮点数x.upper()
:转化为大写x.lower()
:转化为小写
集合操作
- 集合是没有任何重复项的无序数据集合。我们可以定义一个集合变量为:
set = {
9,1,-1,5