作者:禅与计算机程序设计艺术
文章目录
1.简介
Python是一种易于学习、功能强大的编程语言。它是一门面向对象的、解释型、动态的高级编程语言,其语法具有清晰明了的特点,允许程序员用更少的代码实现更多的功能。作为一名合格的Python工程师,需要对Python的基本概念有一定的了解,并能够用Python解决一些实际的问题,同时还要有丰富的编程经验和实践能力。
这篇文章将会从以下几个方面详细介绍Python:
- 语法基础
- 数据类型及运算符
- 控制语句
- 函数和模块
- 文件操作、异常处理、类与对象等高级特性
文章的内容不会涉及太多的计算机基础知识,而是通过比较简洁的方式,让读者快速掌握Python的语法、数据结构和基本使用方法。对于已经有一定编程经验的读者,可以参考这个材料进行进一步深入学习。
2. 语法基础
Python程序结构
Python源文件通常由若干函数组成,每一个函数称为模块或程序段(module or program segment)。如下示例:
#!/usr/bin/env python
def main():
print('Hello world!')
if __name__ == '__main__':
main()
#!/usr/bin/env python
是一种魔法标记(shebang),告诉系统使用哪个解释器来运行当前脚本;def main()
定义了一个名为main的函数,此函数没有参数;print('Hello world!')
调用print函数输出字符串“Hello world!”;if __name__ == '__main__':
是一个条件判断,当脚本被直接运行时,该条件为真;否则为假。
在上述例子中,我们定义了一个简单的函数main(),并通过if name == ‘main’:条件判断确定是否是主函数入口,如果是的话,则调用main()函数。
注释
单行注释以井号开头 #
,例如:
# This is a single line comment
块注释可以用三个双引号或者单引号括起来,例如:
"""
This is a block comment
written in more than just one line
"""
标识符
标识符就是变量、函数、模块名等用户定义的名称。在Python中,标识符必须遵循下列规则:
- 第一个字符必须是字母或者下划线(_);
- 可以包含字母、数字、下划线;
- 不区分大小写;
- 在严格模式下,标识符不能以数字开头。
因此,以下代码是合法的:
a = 1 # 变量名
my_variable = "hello" # 变量名
_var = 'foo' # 变量名
print(_) # 有效,因为非严格模式不要求标识符以字母开头
class Abc: # 模块名
pass
但以下代码不是合法的:
$abc = 1 # 第一字符不是字母
abc+ = True # +后面不是字母或数字
class abc: # 已存在的关键字
pass
除了以上命名规范外,还有一些特殊的标识符,如模块名、类名、函数名等。这些标识符在定义的时候,需要严格遵守一些命名约定。
保留字
保留字是预先定义好的关键字。这些关键字不能用于自定义标识符的名称。Python 3.x中的保留字如下:
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
当然,也存在一些其它关键字,如:
nonlocal
: 表示变量在嵌套作用域中赋值;async
和await
: Python 3.5版本引入的异步编程关键词;yield
: 用作生成器函数返回值。
数据类型
Python支持以下几种基本的数据类型:
- 整型:int
- 浮点型:float
- 布尔型:bool
- 字符串:str
- 字节串:bytes
整数型 int
整数型是带符号的,也就是说正数和负数都可以使用,而不仅仅是正数。整数型可以是十进制、二进制、八进制或十六进制表示。其中,八进制的数字以0o或0O开头,十六进制的数字以0x或0X开头。
例如:
num1 = 123 # 十进制表示的整数
num2 = 0b1111 # 二进制表示的整数
num3 = 0o177 # 八进制表示的整数
num4 = 0xFF # 十六进制表示的整数
num5 = num1 + num2 # 加法运算
num6 = num1 / num2 # 除法运算
num7 = num1 // num2 # 地板除法运算
num8 = abs(-123) # 返回数字的绝对值
浮点型 float
浮点型用来表示小数。默认情况下,Python中的浮点数都是double精度形式的,这是由标准规定的。也可以使用科学计数法表示,也就是用e或E替代*乘方符号。
例如:
pi = 3.14159 # 默认double精度形式的浮点数
eps = 1.0e-6 # 科学计数法表示的浮点数
cosine = cos(pi/4) # 计算cos值
布尔型 bool
布尔型只有两个取值,True和False。
例如:
flag1 = False
flag2 = flag1 and (not flag1)
字符串 str
字符串是由零个或多个字符组成的序列,每个字符都用一个Unicode编码表示。字符串用单引号(')或双引号(")括起来,并且可以跨越多行书写。
例如:
str1 = "Hello World!"
str2 = '''This is a multi-line string.
It spans two lines.'''
str3 = len(str1) # 获取长度
str4 = str1[0] # 通过索引获取字符
str5 = str1[:5]+str1[-5:] # 切片字符串
str6 = '{} is {} years old.'.format('Alice', 25) # 使用格式化字符串
字节串 bytes
字节串是一种不可变的序列,只用来存储字节数据,它是str的一个子类。
例如:
byteStr = b'some byte data'
运算符
Python提供了丰富的运算符来对不同数据类型做不同的操作。主要包括算术运算符、比较运算符、逻辑运算符、身份运算符、成员运算符和赋值运算符。
算术运算符
操作符 | 描述 | 举例 |
---|---|---|
+ |
加 | x + y |
- |
减 | x - y |
* |
乘 | x * y |
/ |
除(浮点除法) | x / y |
// |
除(整数除法,结果是整数) | x // y |
% |
求模(取余) | x % y |
** |
幂 | x ** y |
例如:
result = x + y
result = x - y
result = x * y
result = x / y
result = x // y # 整数除法
result = x % y
result = x ** y
比较运算符
操作符 | 描述 | 举例 |
---|---|---|
< |
小于 | x < y |
> |
大于 | x > y |
<= |
小于等于 | x <= y |
>= |
大于等于 | x >= y |
== |
等于 | x == y |
!= |
不等于 | x!= y |
is |
对象身份(指针相同) | x is y |
in |
是否属于容器或映射中的元素(成员测试) | 'c' in s |
not |
逻辑非 | not x |
or |
或 | x or y |
and |
且 | x and y |
例如:
if x < y:
print("x is less than y")
elif x > y:
print("x is greater than y")
else:
print("x is equal to y")
if 'c' in s:
print("'c' exists in the string.")
逻辑运算符
操作符 | 描述 | 举例 |
---|---|---|
not |
逻辑非 | not x |
or |
短路逻辑或(返回第一个表达式为真的值) | x or y |
and |
短路逻辑与(返回第一个表达式为假的值) | x and y |
is |
对象身份 | x is y |
in |
是否属于容器或映射中的元素(成员测试) | 'c' in s |
例如:
value = 0
if value == 0 or value > 5:
print("Value is zero or greater than five.")
成员运算符
操作符 | 描述 | 举例 |
---|---|---|
is |
对象身份 | x is y |
in |
是否属于容器或映射中的元素(成员测试) | 'c' in s |
例如:
if arr is None:
arr = []
arr.append(val)
赋值运算符
操作符 | 描述 | 举例 |
---|---|---|
= |
简单的赋值运算符 | 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 @= y |
/= |
可变赋值 | seq[i:j] = iterable |
*= , += , -= , etc. |
混合赋值(类似于列表解析, 但性能更好) | lst[i:j] = [y]*len(lst[i:j]) |
例如:
x = y = z = 0
x += 1
lst[i:j] = [y]*len(lst[i:j]) # 混合赋值
控制语句
Python提供了三种控制语句:
if
…elif
…else
条件语句for
循环语句while
循环语句
if…elif…else 条件语句
if 语句用于条件选择,根据给定的判断条件执行相应的动作。
if condition1:
statement1
elif condition2:
statement2
else:
statement3
比如:
number = 10
if number > 0:
print('{} is positive'.format(number))
elif number == 0:
print('{} equals to zero'.format(number))
else:
print('{} is negative'.format(number))
for 循环语句
for 语句用于遍历可迭代对象(如列表、元组、集合)中的元素。
for item in sequence:
statement
else:
suite_finalization_statement
比如:
fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
print('Current fruit:', fruit)
else:
print('All fruits have been printed.')
while 循环语句
while 语句用于重复执行一个语句直到某个条件满足为止。
while condition:
statement
else:
suite_finalization_statement
比如:
count = 0
while count < 5:
print('The count is:', count)
count += 1
else:
print('The loop has ended')
函数
Python函数是组织代码的基本单元。函数封装了一系列语句,并赋予它们名称。
函数创建语法:
def functionName(parameter1, parameter2,...):
"""function documentation string"""
statements
return expression
- 函数名称:函数的名字,应该是标识符的样式。
- 参数:参数是传递给函数的信息,可以在函数调用时提供。参数可以有默认值,也可以不提供。
- 函数文档字符串:这是一个字符串,通常用来描述函数作用,帮助阅读代码的人。
- 语句:语句是函数体内的代码。
- 返回值:返回值是一个表达式,一般是调用函数所得到的值。
比如:
def helloWorld():
print('Hello world!')
def addNumbers(x, y):
"""This function adds two numbers together."""
return x + y
result = addNumbers(5, 10)
print(result) # Output: 15
模块
Python中的模块指的是一组Python代码文件,实现了某些功能。通过导入模块可以访问模块中的函数和变量。
模块创建语法:
import module1[, module2[,... moduleN]]
from package import module1[, module2[,... moduleN]]
import module1[, module2[,... moduleN]]
:导入指定的模块,只能访问模块中的公共接口。from package import module1[, module2[,... moduleN]]
:导入指定包下的模块,可通过缩写的方式访问模块中的公共接口。
比如:
import math
import random as r
r.seed(1234)
randomNum = r.randint(0, 100)
print('Random number between 0 and 100:', randomNum)
degreeToRadian = math.radians(90)
print('Degrees to radians conversion result:', degreeToRadian)
附:怎样学习计算机编程?
学习计算机编程是一个富有挑战性和令人兴奋的过程。计算机编程能够让你理解计算机如何工作,同时也能够培养解决问题和创造性思维。下面,我将为你提供一份关于如何学习计算机编程的详尽指南,帮助你入门并提供进一步的学习建议。
选择一门编程语言:计算机编程有很多不同的编程语言可供选择,比如Python、Java、C++等。对于初学者来说,Python通常是一个不错的选择,因为它易于学习和理解,同时也有很多优秀的学习资源可供使用。
掌握基本概念:在你开始实际编写代码之前,了解一些基本的编程概念是非常重要的。这些概念包括变量、数据类型、条件语句、循环语句等。通过阅读教科书、在线教程或观看视频教程,你可以很好地掌握这些概念。
学习语法和语义:每门编程语言都有其独特的语法和语义规则。学习这些规则是编程的基础。你可以通过编写简单的代码片段来熟悉语法,逐渐增加难度并尝试解决更复杂的问题。
解决问题:编程的核心是解决问题。尝试将现实中遇到的问题转化为计算机程序,并思考如何用编程的方式解决。这将帮助你锻炼解决问题的能力和创造性思维。
刷题和练习:完成编程练习和刷题是学习编程的重要部分。有很多在线平台提供编程题目,如LeetCode、HackerRank等。通过解决这些问题,你将学会运用编程知识来解决各种实际问题,并提高自己的编程能力。
参与项目:参与开源项目或者自己的小项目是提高编程技能的好方法。通过与其他开发者合作,你可以学习到项目管理、团队合作和实际开发经验。
阅读和学习源代码:阅读别人的代码是学习编程的重要途径。通过阅读他人优秀的代码,你可以学习到新的编程技巧和最佳实践。开源项目是一个很好的资源,你可以通过GitHub等平台找到感兴趣的项目。
寻求帮助和交流:学习编程的过程中,你可能会遇到一些困难和问题。不要害怕请求帮助。参与编程社区,加入相关的论坛、社交媒体群组或者参加编程活动,与其他编程爱好者交流经验和解决问题的方法。
持续学习和实践:计算机编程是一个不断发展和演进的领域。要不断学习新的技术和编程语言,并且保持实践。通过不断地编写代码和解决问题,你将不断提高自己的编程技能。
推动自己的项目:一旦你掌握了基本的编程技能,尝试着构建自己的项目。这可以是一个简单的应用程序、一个网站或者一个游戏。通过实践,你将更深入地了解编程,并能够应用你所学到的知识。
需要注意的是,学习编程是一个持续的过程,需要耐心和毅力。不要期望一蹴而就,要保持积极的学习态度并坚持下去。同时,要记住编程是一种创造性的活动,鼓励你发挥想象力和创造力。
最后,记住编程不仅仅是一种技能,它也是一种思维方式。通过学习计算机编程,你将培养逻辑思维、问题解决和分析能力,这些技能在各个领域都是宝贵的。
祝你在学习计算机编程的过程中取得成功!