Python编程基础(老男孩)——第二章 Python基础

第二章 Python基础

2.1 hello world

python有两种方式输出”hello world“


2.1.1 文本式编程

在.py文件中写好代码,把文件丢给python解释器运行,如果是ide,则ide调用python解释器运行文件。


2.1.2 命令行交互式编程

可以在命令行中使用 python 命令调用 Python 解释器,然后在解释器中输入 Python 代码来输出 "Hello World"。

以下是在命令行中输出 "Hello World" 的步骤:

  1. 打开命令行终端(Windows 上可以使用 cmd 或 PowerShell,Mac 或 Linux 上可以使用终端)。

  1. 在命令行中输入 python 命令,然后按下 Enter 键。这将启动 Python 解释器,并显示一个提示符 >>>

  1. 在提示符后输入以下代码,并按下 Enter 键:

print("Hello World")
  1. Python 解释器将执行该代码,并将 "Hello World" 输出到屏幕上。

完整的命令行会像这样:

$ python
Python 3.9.0 (default, Oct  6 2020, 00:00:00)
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> print("Hello World")
Hello World
>>>

在这个例子中,我们在 Linux 上使用 Python 3.9.0 版本来输出 "Hello World"。


2.2 PEP8代码风格指南

PEP8 是 Python 官方的代码风格指南,全称是 "Python Enhancement Proposal 8"。它详细说明了 Python 代码的书写规范和约定,包括代码布局、标识符命名、注释和文档字符串、代码结构等方面。遵循 PEP8 指南可以提高代码的可读性和可维护性,同时也方便了代码的共享和协作。


2.2.1 注释

在 Python 中,注释是用来对代码进行说明和解释的语句,它不会被解释器执行。Python 中有两种注释方式:

  1. 单行注释:以 # 开头,直到行末的所有内容都会被解释器忽略。

# 这是单行注释
print("Hello World")  # 这是带注释的代码行
  1. 多行注释:使用三个单引号 ''' 或三个双引号 """ 包围多行注释内容。

'''
这是
多行注释
'''
print("Hello World")
"""
这也是
多行注释
"""
print("Hello World")

Python 中的注释可以用来记录代码的目的、用途、特点、作者等信息,也可以用来暂时屏蔽掉一些代码。良好的注释能够提高代码的可读性和可维护性,建议在编写代码时添加适当的注释。


2.2.2 缩进

在 Python 中,缩进是非常重要的语法元素,它决定了代码块的开始和结束。Python 使用缩进而不是花括号来表示代码块的范围,因此缩进必须正确使用,否则代码将无法正常执行。

Python 代码块使用四个空格缩进,不要使用制表符或其它空格数。下面是一些示例代码:

if True:
    print("True")
else:
    print("False")
def say_hello(name):
    print(f"Hello, {name}!")

say_hello("Tom")

在上面的示例代码中,if 语句和函数定义的代码块都使用了四个空格的缩进,缩进可以嵌套,用于表示嵌套的代码块。

如果缩进不正确,会导致语法错误或代码运行不符合预期。因此,编写 Python 代码时,要仔细检查缩进是否正确,并保持缩进的一致性,这样可以提高代码的可读性和可维护性。


2.2.3 单引号与双引号

在 Python 中,单引号和双引号都可以用来表示字符串,它们的使用方法是相同的,但是有一些细微的区别。

  1. 在字符串中使用引号

如果字符串中使用了单引号,那么可以使用双引号来表示字符串,反之亦然。例如:

print("I'm Tom.")  # 使用双引号表示字符串
print('He said, "Hello!"')  # 使用单引号表示字符串
  1. 在字符串中使用相同的引号

如果字符串中使用了双引号,那么可以在字符串中使用单引号,反之亦然。例如:

print("He said, 'Hello!'")  # 在双引号字符串中使用单引号
print('I said, "Hi!"')  # 在单引号字符串中使用双引号
  1. 转义字符

如果字符串中需要表示引号本身,可以使用反斜杠(\)来转义。例如:

print("She said, \"I'm happy!\"")  # 转义双引号
print('He said, \'It\'s raining.\'')  # 转义单引号

一般来说,单引号和双引号可以互相替换使用,只要保证字符串的开头和结尾使用相同的引号。建议在字符串中使用双引号,因为单引号在 SQL 查询等语句中经常被用作字符串的引号,使用双引号可以避免混淆。


2.2.4 逻辑行与物理行

在 Python 中,逻辑行和物理行是两个概念。

逻辑行指的是代码中的一行语句,可以通过分号(;)将多个语句放在同一行,也可以通过反斜杠(\)将一行语句分成多行。例如:

# 分号将两个语句放在同一行
x = 1; y = 2

# 反斜杠将一行语句分成多行
z = x + \
    y

物理行指的是代码文件中的一行代码,可以是任意长度。在 Python 中,物理行的结尾通常使用换行符来表示,但是在某些情况下,可以省略换行符将多个物理行合并成一个逻辑行。例如:

# 括号内的多个物理行被合并成一个逻辑行
x = (1 +
     2 +
     3)

需要注意的是,Python 中的缩进和语句的结尾通常用来划分逻辑行,而不是物理行。例如:

if x == 1:
    y = 2

在上面的示例代码中,if 语句的逻辑行只有一行,但是它由两个物理行组成,第二行缩进了四个空格。这样的代码风格可以提高代码的可读性和可维护性。


2.3 变量与内存管理

Python 中的变量是一个内存地址的标识符,它指向一个存储在内存中的对象。在 Python 中,变量和对象是两个不同的概念,变量只是一个指针,它指向的对象可以是任何类型的数据。


2.3.1 变量赋值

在 Python 中,变量赋值是通过使用等号(=)运算符实现的。变量赋值的一般形式是:

variable = expression

其中,variable 表示要赋值的变量名,expression 表示要赋给该变量的值。

在 Python 中,变量赋值实际上是将一个对象的引用赋给变量,而不是将值赋给变量。因此,在变量之间进行赋值时,实际上是将一个对象的引用复制到另一个变量中,而不是将对象本身复制到另一个变量中。

例如:

a = 123
b = a  # 将 a 的引用复制给 b
a = 456
print(b)  # 输出 123

在上面的例子中,首先将一个整数对象 123 赋给变量 a,然后将 a 的引用复制给 b,最后将 a 的引用指向另一个整数对象 456。由于 b 仍然指向原来的整数对象 123,因此输出 b 的值为 123。

需要注意的是,在 Python 中,变量名不需要事先声明类型,变量类型是根据变量所引用的对象类型来确定的。例如:

x = 1     # 整数类型
y = 2.0   # 浮点数类型
z = 'abc' # 字符串类型

Python 支持链式赋值,即一行代码中可以同时给多个变量赋值。例如:

a = b = c = 1    

在上面的例子中,三个变量 a、b 和 c 同时被赋值为整数 1。

链式赋值的原理是,将一个对象的引用同时赋给多个变量。因此,在链式赋值中,所有变量都引用同一个对象。例如:

a[0] = 4
print(b)  # 输出 [4, 2, 3]

在上面的例子中,将列表 a 的第一个元素修改为 4,然后输出变量 b 的值,发现 b 的值也被修改了。这是因为变量 a 和 b 都引用同一个列表对象。


Python 有一些命名规则和约定,以便更好地管理变量名。以下是一些常用的变量命名规则:

  • 变量名只能包含字母、数字和下划线,不能以数字开头。

  • 变量名应该具有描述性,以便在阅读代码时能够快速理解其含义。

  • 变量名应该遵循小写字母和下划线的组合,例如,my_variable。

  • 变量名的长度应该适中,不应该太长或太短。

  • 避免使用 Python 关键字作为变量名,例如,if、while、for 等。

  • 对于常量,变量名应该全部大写,例如,MAX_VALUE。

以下是一些命名约定的示例:

# 合法的变量名
age = 18
name = "Alice"
max_value = 100

# 不合法的变量名
123abc = 456  # 变量名不能以数字开头
a b c = 123   # 变量名不能包含空格
if = 123      # 变量名不能使用 Python 关键字

需要注意的是,Python 是区分大小写的,因此变量名中的大小写字母是有意义的。例如,变量 name 和变量 Name 是不同的变量名。


除了上面提到的命名规则和约定之外,还应该避免以下三种情况:

  1. 避免使用单个字符作为变量名,除非它们是用于特定用途的常见缩写,例如 i 和 j 用于循环计数器,x、y、z 用于坐标轴。如果变量名过于简短和抽象,很难在代码中快速理解其含义。

  1. 避免在包/模块名中使用连接符 " - ",而应该使用小写字母和下划线的组合,例如 my_module,而不是 my-module。因为 Python 常用的命名约定是使用下划线作为单词之间的分隔符,连接符常常用于其他语言的命名约定中。

  1. 避免使用以双下划线开头和结尾的名称,例如 __init__,因为这些名称在 Python 中有特殊的含义,被称为“魔术方法”或“特殊方法”,用于定义类的行为和属性。如果在自己的代码中使用这些名称,可能会与 Python 中的特殊方法冲突,并导致意外的行为。

总之,在选择变量名和命名模块时,应该选择具有描述性的、清晰的变量名和命名模式,以便代码易于理解和维护。


2.3.2 内存管理

Python 中的内存管理主要涉及两个方面:对象的创建和删除,以及内存分配和释放。

  1. 对象的创建和删除

Python 中的对象是动态创建的,也就是说,当代码中出现一个新对象时,Python 解释器会在内存中为其分配空间。Python 会自动进行垃圾回收,即当一个对象不再被引用时,Python 解释器会自动将其内存释放,以供其他对象使用。

  1. 内存分配和释放

Python 中的内存分配和释放是由解释器自动管理的。Python 采用了一种名为“引用计数”的技术来跟踪对象的引用情况,即每个对象都有一个计数器,用于记录当前有多少个引用指向该对象。当对象被引用时,计数器加一,当引用被删除时,计数器减一。当计数器为零时,Python 解释器会自动将对象从内存中删除。

除了引用计数之外,Python 还采用了其他技术来优化内存管理,例如内存池机制和垃圾回收机制。内存池机制通过重复使用一些小的内存块来减少内存分配和释放的开销,提高内存使用效率。垃圾回收机制则通过检测不再被引用的对象,并在适当的时候将其删除,以避免内存泄漏和程序崩溃。

总之,Python 的内存管理是由解释器自动管理的,开发者无需手动分配和释放内存。但是,开发者需要注意避免创建大量不必要的对象和循环引用等情况,以避免内存占用过高和程序性能下降的问题。


2.4 print and input

在 Python 中,print() 函数和 input() 函数是用于输出和输入数据的两个基本函数。

  1. print() 函数

print() 函数可以将给定的内容输出到控制台上。可以将多个参数传递给 print() 函数,它们将被自动转换为字符串,并以空格分隔输出。例如:

print("Hello", "World")

上述代码会输出:Hello World

print() 函数还可以使用格式化字符串,例如:

name = "Alice"
age = 25
print("My name is %s, and I am %d years old." % (name, age))    

上述代码中,%s 表示字符串类型的占位符,%d 表示整数类型的占位符。当 print() 函数执行时,占位符将被实际的变量值所替代,输出结果为:My name is Alice, and I am 25 years old.


  1. input() 函数

input() 函数用于从控制台读取用户的输入。当调用 input() 函数时,程序将暂停执行,等待用户在控制台上输入一些文本,并按回车键确认。例如:

name = input("Please enter your name: ")
print("Hello, " + name + "!")

上述代码中,程序将提示用户输入姓名,并将输入值存储在 name 变量中。然后,程序将使用字符串拼接方式将欢迎信息输出到控制台上。如果用户输入的是 Alice,则输出结果为:Hello, Alice!


2.5 运算符与表达式

在 Python 中,运算符用于执行各种算术、比较、逻辑和位运算。表达式是由运算符、操作数和函数调用组成的序列,用于计算值。


2.5.1 算术运算符

算术运算符用于执行基本的数学运算,包括加法、减法、乘法、除法和取模等。例如:

a = 10
b = 3
print(a + b)  # 输出 13
print(a - b)  # 输出 7
print(a * b)  # 输出 30
print(a / b)  # 输出 3.3333333333333335
print(a % b)  # 输出 1

2.5.2比较运算符

比较运算符用于比较两个值的大小或相等性。例如:

a = 10
b = 3
print(a > b)   # 输出 True
print(a < b)   # 输出 False
print(a == b)  # 输出 False
print(a != b)  # 输出 True

2.5.3 逻辑运算符

逻辑运算符用于对布尔值进行逻辑运算,包括与、或、非等。例如:

a = True
b = False
print(a and b)   # 输出 False
print(a or b)    # 输出 True
print(not a)     # 输出 False

2.5.4 位运算符

位运算符用于对整数进行位运算,包括按位与、按位或、按位异或、左移和右移等。例如:

a = 10    # 二进制为 1010
b = 3     # 二进制为 0011
print(a & b)    # 输出 2 (二进制为 0010)
print(a | b)    # 输出 11 (二进制为 1011)
print(a ^ b)    # 输出 9 (二进制为 1001)
print(a << 1)   # 输出 20 (二进制为 10100)
print(a >> 1)   # 输出 5 (二进制为 0101)

2.5.5 赋值运算符

赋值运算符用于将右侧的值赋给左侧的变量。Python 中常见的赋值运算符包括:

  • =:简单的赋值运算符,将右侧的值赋给左侧的变量。

  • +=:加法赋值运算符,相当于 a = a + b

  • -=:减法赋值运算符,相当于 a = a - b

  • *=:乘法赋值运算符,相当于 a = a * b

  • /=:除法赋值运算符,相当于 a = a / b

  • %=:取模赋值运算符,相当于 a = a % b

  • //=:整除赋值运算符,相当于 a = a // b

  • **=:幂赋值运算符,相当于 a = a ** b

  • &=:按位与赋值运算符,相当于 a = a & b

  • |=:按位或赋值运算符,相当于 a = a | b

  • ^=:按位异或赋值运算符,相当于 a = a ^ b

  • <<=:左移赋值运算符,相当于 a = a << b

  • >>=:右移赋值运算符,相当于 a = a >> b

例如:

a = 10
b = 3
a += b  # 等价于 a = a + b
print(a)  # 输出 13

2.5.6 成员运算符

成员运算符用于判断一个值是否属于某个序列,包括字符串、列表、元组、集合和字典等。Python 中常见的成员运算符包括:

  • in:如果指定的值在序列中,返回 True,否则返回 False。

  • not in:如果指定的值不在序列中,返回 True,否则返回 False。

例如:

a = [1, 2, 3, 4, 5]
print(3 in a)  # 输出 True
print(6 in a)  # 输出 False

2.5.7 身份运算符

身份运算符用于比较两个对象的内存地址是否相同,包括 isis not 两个运算符。例如:

a = [1, 2, 3]
b = [1, 2, 3]
print(a is b)     # 输出 False
print(a is not b) # 输出 True

2.5.8 运算符的优先级

下表列出了Python中各种运算符的优先级,优先级从高到低排列(相同优先级按从左到右):

运算符

描述

lambda

Lambda表达式

if - else

条件表达式

or

布尔或

and

布尔与

not x

布尔非

in, not in, is, is not, <, <=, >, >=, !=, ==

比较运算符

|

按位或

^

按位异或

&

按位与

<<, >>

移位运算符

+, -

加法和减法

*, @, /, //, %

乘法、矩阵乘法、除法、整除和取余

+x, -x, ~x

正号、负号和按位取反

**

幂运算

await x

await 表达式

x[index], x[index:index], x(arguments...), x.attribute

下标、切片、调用和属性访问

(expressions...), [expressions...], {key: value...}, {expressions...}

明确的绑定或元组、列表、字典、集合显示

x.y

属性参考

x[i]

下标

x[i:j]

分片

f(arguments...)

函数调用

(expressions...)

绑定或元组显示

[expressions...]

列表显示

{key: value...}

字典显示

{expressions...}

集合显示


2.6 流程控制语句

Python中的流程控制语句包括条件语句(if语句)、循环语句(for语句、while语句)、控制流程语句(break语句、continue语句、pass语句)和异常处理语句(try语句、except语句、finally语句、raise语句)。


2.6.1 条件语句

条件语句主要包括 ifelifelse,语法如下:

if condition1:
    statement1
elif condition2:
    statement2
else:
    statement3

其中,condition1 为判断条件,若为 True 则执行 statement1,否则判断 condition2,若为 True 则执行 statement2,否则执行 statement3


2.6.2 循环语句

循环语句包括 whilefor 两种形式。


  • while循环
while condition:
    statement

其中,condition 为循环条件,若为 True 则重复执行 statement,直到 conditionFalse 才停止循环。


  • for循环

for 循环的语法如下:

for variable in sequence:
    statement

其中,sequence 为一个可迭代对象(如列表、元组、字符串等),variable 为循环变量,每次循环从 sequence 中取出一个值赋给 variable,然后执行 statement

除了普通的 for 循环,Python 还提供了 range 函数用于生成指定范围的数值序列,语法如下:

range(start, stop[, step])

其中,start 为起始值,stop 为结束值(不包含),step 为步长(默认为 1)。例如,range(1, 5) 生成的序列为 1, 2, 3, 4。

另外,Python 还提供了 breakcontinue 关键字,用于控制循环的执行流程。

  • break 用于结束循环,即使循环条件仍然为 True

  • continue 用于跳过当前循环迭代,进入下一次循环迭代。

  • pass是一个空语句,用于占位。它通常被用作占位符,用于表示未实现的代码块。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、Python运维开发基础课程列表 Python运维开发基础课程列表 第一天 1、编程语言介绍 2、Python基础,介绍历史、发展情况及现状 3、Python安装、环境准备 4、编程风格、语法要求、变量格式等 5、编写用户交互脚本 6、读取用户输入 7、基本流程控制,if..else/for x in…/while True 8、程序流程控制二,break\continue\ 嵌套循环 9、项目实践:编写用户登录认证程序 ※实现用户名密码登陆,输入错误3次后锁定用户,多用户在线 第二天 1、python I/O交互 2、处理文件、通过Python修改及处理文件内容 3、项目实践:编写员工信息查询程序 ※读取员工信息数据库,支持模糊查询,支持动态添加、修改、删除员工信息 4、列表 5、元组、集合 6、字典的概念、语法、使用 7、程序实践 8、项目实践:编写信用卡ATM机程序,自动计息,自动扣款,带对账单功能 ※提供消费购物接口,取款需自动扣除手续费,每月底生成电子对帐单,延迟还款需计 利息 第三天 1、Python模块的介绍与使用 2、常用模块介绍 3、Pickle 序列化(实现内存数据在不同程序间共享) 4、自定制模块 5、异常处理,try….except 6、自定义异常类 7、Python函数概念、语法 8、函数参数 10、函数处理多个参数、默认参数 11、Return 12、正则表达式 13、迭代器和生成器 14、lambda 函数使用 15、装饰器 16、项目实践:编写备份程序,具备常规备份、增量备份、差异备份功能 第四天 1、面向对象编程基础 2、类的基本语法 3、编写类练习小程序 4、类的初始化 5、类下面的函数使用 6、类的调用 7、类的继承 8、项目实践:安红恋爱游戏程序 ※练习使用面向对象的思维设计并编写程序 9、项目实战一、模拟人生游戏 ※设定两个故事场景,场景可以穿插衔接,人物之间有关系和互动并且互相影响,根据 不同用户的玩法实现开放式结局 第五天 1、Socket 介绍 2、Python socket 语法 3、简单的socket 交互程序 4、Socket Server的开发与使用 5、多线程非阻塞并发自处理 6、练习程序:用SOCKET模拟实现SSH客户端功能 6、项目实战二、开发FTP服务器\客户端软件 ※分别开发服务器端和客户端,通过Socket模块实现网络通信,模拟实现FTP主要的文件下载、上传功能、实现多用户并发在线使用。 第六天 1、 项目实战三、开发运维审计服务器,实现公司全网用户操作审计需求 ※开发一个堡垒机,实现用户可以通过WEB 和命令行登录到所有LINUX服务器上,纪录所有用户命令操作 2、项目实战四、通过Python脚本连接MYSQL数据库实现数据自动入库、更新 3、项目实战五、开发C/S架构备份服务器,实现远程备份 ※使用PYTHON SOCKET模块实现文件的远程压缩传输 二、Python中高级课程列表 Python运维开发培训中高级课程列表 第七天 1、项目实战六、编写类Nagios监控软件框架 2、编写监控服务器server 端 3、实现自动监控、自动报警 4、编写监控客户端 5、可监控自定义进程 6、使用Python SNMP模块获取并处理服务器信息 7、使用Paramiko模块管理Linux 服务器 第八天 1、Python 多线程程序开发使用 2、项目实战七、开发实现对上千台服务器的批量管理,分发指令、文件传送的运维管理程序 ※用多线程的方式并发连接登录多台LINUX服务器,实现并发命令操作、文件分发,实时结果返回,并可根据服务器性能控制线程量,千台机器改密码1分钟完成。 3、HTML/JAVAScript基础 4、WEB JS Package BootStrap 介绍与使用 ※通过BootsStrap 样式制作精美清新的WEB页面 5、使用JSON(实现不同程序间内存数据交换) 6、JQuery/Ajax 基础与使用 ※实现页面部分内容与后台交互并实时刷新页面 第九天 1、Python WEB 架构Django的介绍、使用 2、Django manage.py 3、Django 视图 4、Django models使用Mysql数据库 5、Django 模板 6、Django url 7、Django Admin 8、编写前后台动态交互页面 三、企业项目实战(web及运维软件开发Python运维开发企业项目实战 第十天 企业大项目实战八--开发BBS论坛软件 1、实现多用户同时在线 2、实现发贴、回复、评论功能 3、接入微博、QQ等SNS社交软件登录发帖接

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值