

本专栏系列为Pythong基础系列,每天都会更新新的内容,搜罗全网资源以及自己在学习和工作过程中的一些总结,可以说是非常详细和全面。 以至于为什么要写的这么详细:自己也是学过Python的,很多新手只是简单的过一篇语法,其实对于一个知识点的底层逻辑和其他使用方法以及参数详情根本不是很了解,这就导致学完很容易忘记,而且在实战过程中也是半知半解,所以自己就尽量写的详细些,让需要的人能更了解Python的每一个知识点,也感谢大家指正,祝大家早日从小码农变成大牛!
Python是一种高级的、解释型、动态类型的编程语言,由Guido van Rossum(吉多·范罗苏姆)于1989年首次发布。Python以其简洁性、易读性和可扩展性而广受欢迎,被广泛应用于各个领域。以下是对Python基本概念、重点部分及常用领域的详细解析,以及针对新手的学习建议。
def关键字开始。try-except语句用于捕获和处理异常。append、insert、remove、pop等。try-except语句捕获和处理异常,可以使程序更加健壮和可靠。Python中的print()函数是一个非常基础且强大的工具,用于在屏幕上显示信息。它不仅可以输出文本字符串,还可以输出其他数据类型(如数字、列表、元组、字典等),并且支持格式化输出,使得输出的信息更加清晰、易读。
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)*objects(可变参数): print()会将这些对象转换为字符串(通过调用它们的__str__()方法),然后输出。如果objects为空,则输出一个空行。sep(可选): ' '。如果你希望在对象之间使用不同的分隔符,可以通过此参数指定。end(可选): '\n',意味着print()调用后会换到下一行。如果你不想在输出后换行,可以将此参数设置为空字符串''。file(可选): sys.stdout(标准输出,通常是屏幕)。这允许你将输出重定向到文件或其他类似文件的对象。flush(可选): sys.stdout。默认情况下,flush是False,意味着输出可能会被缓冲在内存中,直到缓冲区满或遇到换行符时才实际写入。将flush设置为True可以确保输出立即被写出,这在需要即时反馈的场景中很有用。这是print()函数最基本的用法,它会在屏幕上输出Hello, World!。
print("Hello, World!")print()函数可以一次性输出多个值,这些值之间默认用空格分隔。
print("Hello", "World", "!")
# 输出: Hello World !#打印多个对象,设置sep参数为逗号分隔
print("Hello", "World", "!",sep=',')
# 输出: Hello,World,!#定义变量
name = "张三"
#输出字符串加变量,将变量跟字符串合并输出,两者使用逗号分隔连接
print('我的名字叫做:',name)
#输出结果:我的名字叫做: 张三默认情况下,print()函数在输出完内容后会换行。
# 使用默认end参数就是换行
print("Hello, ")
print("World!") 输出结果:

如果你希望在同一行输出多个print()的结果,可以使用end参数来指定结束符,比如使用空字符串""来避免换行。
# 设置end参数为换行,当第一个print执行后,就会以空格进行结尾,下一个print继续输出
print("Hello, ",end=" ")
print("World!")
#输出: Hello, World!
print('北京',end='--->')
print('欢迎你')
#输出:北京--->欢迎你这里仅作为了解,后面会有详细关于文件操作
这是将输出结果写入到文件中,写入到当前.py文件所在的目录下,一个名叫output.txt的文件,如果该文件不存在则会自动创建
# 将输出重定向到文件,open是打开文件,但是这里使用了with上下文管理器,不需要关闭文件,会自动关闭
# 后面会详细介绍上下文管理器
with open('output.txt', 'w') as f:
print("这是一个测试,我正在将输出结果写入到文件", file=f) 打开文件查看结果:

使用print进行数学运算
#使用print输出进行数学运算
print(1+2) # 3
print(10*10) # 100
print((4+1)*5) # 25
print(10/5*2) # 4.0print('张三'+'李四') # 输出:张三李四
#如果是多个数字连接起来的话 会默认为加法运算,所以需要把数字变成字符串
print(1+2) # 输出:3 变成了加法运算了
#需要把数字变成字符串输出
print('1'+'2') # 12
#如果让字符和数据使用+连接会报错,无法识别类型
print('北京'+2022)
# 报错:TypeError: can only concatenate str (not "int") to str
# 正确应该是print('北京'+'2022')Ascall表

#使用chr 输出转换ascll码
#输出字符串b
print('b')
#数字98在ascll码表中对应的就是b,使用chr将98转换成ascall中对应的结果
print(chr(98)) # b
#使用ord将字符转换哼ascool码 跟chr是相反的
#注意ord中只能放一个字符
print(ord('b')) # 98这里暂时只是简单演示一下,这个涉及到比较复杂的信息,所以更详细的内容会慢慢学到
下面这个案例的意思就是通过使用{0}{1}在字符串中占住一个位置,后面使用.format进行补充,将变量根据占位符的顺序进行填充
#设置变量name
name = "张三"
#设置变量age
age = 19
print('我的名字叫做{0},我今年{1}岁了'.format(name,age)) # 我的名字叫做张三,我今年19岁了print()函数虽然功能强大且灵活,但在编写面向生产环境的代码时,应当谨慎使用,尤其是在涉及大量输出或需要高性能的情况下。过多的打印调用可能会影响程序的性能,并且可能导致难以处理的日志文件。str.format()或f-strings)或专门的日志记录库(如logging)。在Python中,input() 函数是一个非常基础且常用的内置函数,它允许程序暂停执行并等待用户从标准输入(通常是键盘)输入一些文本。然而,需要注意的是,Python的input()函数在其标准形式下并不接受任何参数(除了可选的提示字符串),并且它总是将输入作为字符串返回,无论用户输入的是什么。
input([prompt])prompt(可选):一个字符串,用作向用户显示的提示信息。如果提供了这个参数,那么它会在等待用户输入之前显示在控制台上。如果省略了这个参数,input()函数将不会显示任何提示信息。input()函数返回用户输入的字符串。这意味着,如果用户输入了一个数字并按下了回车键,input()函数仍然会将这个输入作为字符串返回。如果你需要将这个字符串转换为其他类型(如整数或浮点数),你需要使用适当的类型转换函数(如int()或float())。
input()使用# 简单的input函数使用,没有提示信息
user_input = input()
print("你输入了:", user_input)
# 运行这段代码后,程序将等待用户输入一些文本,然后按回车键。输入的内容将被打印出来。运行结果:

input()# 使用提示信息的input函数
name = input("请输入你的名字:")
print("你好,", name)
# 运行这段代码后,程序将显示“请输入你的名字:”作为提示,等待用户输入名字,然后打印出问候语。
# 将输入转换为整数
age_str = input("请输入你的年龄:")
age = int(age_str) # 注意:这里假设用户输入的是一个可以转换为整数的字符串
print("你", age, "岁了。")
# 注意:如果用户输入的不是一个可以转换为整数的字符串(比如字母或特殊字符),这段代码将抛出一个ValueError异常。
# 在实际应用中,你可能需要添加异常处理来捕获这种情况。输入整数:

输入字符串:

try:
age_str = input("请输入你的年龄:")
age = int(age_str)
print("你", age, "岁了。")
except ValueError:
print("错误:请输入一个有效的数字。")
# 这个例子展示了如何使用try-except语句来捕获并处理用户输入非数字时可能发生的ValueError异常。
Python的input()函数是一个简单但强大的工具,用于从用户那里获取文本输入。虽然它本身不接受除提示字符串以外的任何参数,但你可以通过类型转换和异常处理来扩展其功能,以处理各种类型的输入并优雅地处理错误情况。
Python中的注释是编写代码时添加的文本,这些文本会被Python解释器忽略,不会执行任何操作。注释的主要目的是为了提高代码的可读性,帮助开发者或其他阅读代码的人理解代码的意图和功能。Python支持两种主要类型的注释:单行注释和多行注释(也被称为块注释)。
单行注释以井号(#)开头,井号后面的所有内容都被视为注释,直到该行的末尾。Python解释器会忽略这些内容。
语法示例:
# 这是一个单行注释
print("Hello, World!") # 这行代码后面的也是注释在上面的例子中,第一行完全是一个注释,它不会影响程序的执行。第二行包含了一个Python语句(打印Hello, World!)和一个位于语句末尾的注释,用于解释该语句的意图或提供额外的信息。
Python官方并没有直接提供多行注释的语法(如其他某些编程语言中的/* ... */)。但是,你可以通过几种方式来实现多行注释的效果。
这是最直接的方法,通过在每行的开始都添加#来创建多行注释。
# 这是一个多行注释的示例
# 使用多个单行注释来实现
# 每行都以 # 开头另一种常见的方法是使用三引号(''' 或 """)来定义多行字符串,但由于我们实际上并不打算使用这个字符串,所以它起到了类似多行注释的效果。需要注意的是,这种方法在技术上不是注释,因为Python确实会处理这个字符串(尽管在很多情况下,这种处理对程序没有影响)。但是,如果你不小心在字符串中引用了变量或调用了函数,它们将被求值,这可能会导致意外的结果。
'''
这是一个多行字符串,但它经常被用作多行注释
因为它在代码执行时不会做任何事情
但请注意,如果你在字符串中引用了变量或调用了函数,它们将被执行
'''
"""
另一种使用三引号的多行字符串(或注释)
这种方式与上面的相同
"""总之,注释是Python(和任何编程语言)中非常重要的部分,它们有助于提高代码的可读性和可维护性。但是,过多的或不必要的注释也可能使代码变得难以阅读和维护。因此,应该谨慎使用注释,并确保它们提供了有用的信息。
在Python中,# coding:utf-8、#coding=utf-8和-*- coding:utf-8 -*-这几种形式都是用来指定文件编码的,但它们的使用场景和含义略有不同。不过,首先需要明确的是,从Python 3.0开始,源文件的默认编码已经是UTF-8,因此在大多数情况下,你不需要显式地指定编码(除非你的文件实际上使用了不同的编码,或者你想要确保与Python 2.x版本的兼容性)。
# coding:utf-8这是最常见的一种形式,用于指定文件的编码为UTF-8。它通常放在Python文件的第一行或第二行(如果第一行是#!开头的shebang行)。Python解释器会读取这个声明,并使用指定的编码来解析源文件中的字符。然而,需要注意的是,这个声明并不是Python语法的一部分,而是一个被广泛接受的约定。因此,即使没有这个声明,如果你的文件是用UTF-8编码的,并且没有包含非ASCII字符(或者在Python 3中),那么它仍然可以正常工作。
#coding=utf-8这种形式是# coding:utf-8的一个变体,主要区别在于等号(=)的使用。虽然大多数Python解释器和编辑器都能识别这种变体,但根据PEP 263(定义Python源文件编码的规范),推荐使用冒号(:)而不是等号(=)来分隔“coding”和编码名称。因此,虽然#coding=utf-8在技术上可能有效,但# coding:utf-8是更推荐的做法。
#-*- coding:utf-8 -*-这种形式是Emacs特有的,用于在Emacs文本编辑器中指定文件的编码。Emacs会在文件的开头和结尾查找这种特定的注释行,以确定文件的编码。然而,这并不是Python官方推荐的做法,也不是Python语法的一部分。如果你的代码只会在Python解释器中运行,并且不使用Emacs作为编辑器,那么你没有必要使用这种形式的编码声明。
# coding:utf-8(或其他适当的编码名称)作为推荐的做法。#coding=utf-8是# coding:utf-8的一个变体,虽然可能有效,但不建议使用。#-*- coding:utf-8 -*-是Emacs特有的,不是Python官方推荐的编码声明方式。Python中的代码缩进是Python语法的一个重要组成部分,它用于区分代码块。在Python中,代码块是通过缩进来定义的,而不是像其他许多编程语言那样使用大括号{}。这意味着Python对缩进的敏感度非常高,错误的缩进会导致语法错误(IndentationError)。
Python使用缩进来组织代码块,这种方式有几个好处:
if判断中一定要有内容,if这一行换行之后让print使用tab进行缩进,就表示print实在if语句中
# 正确的缩进示例
if 10 > 3:
print('正确')if判断中一定要有内容,由于print没有进行缩进而是跟if语句平行,那么就表示不在if语句中,if语句中没有代码就会报错
# 错误的缩进示例
if 10 > 3:
print('错误')
#报错信息:IndentationError: expected an indented block在Python中,标识符是用来给变量、函数、类、模块等命名的。标识符的命名需要遵循一定的规则,以确保它们既有效又易于理解。下面详细解释Python中标识符的命名规则以及列举一些常用的命名规范。
myVar和myvar会被视为两个不同的标识符。
if、else、for、while等都是保留字,不能用作变量名、函数名等。
Python社区形成了一套广泛接受的命名规范,称为PEP 8。PEP 8是关于Python代码风格的官方指南,其中包含了关于标识符命名的详细建议。以下是一些常用的命名规范:
my_variable、number_of_users。calculate_sum()、is_valid_input()。MyClass、DatabaseConnection。mymodule、my_custom_module。MAX_USERS、PI。is_或has_等前缀,后面跟上描述性的名称。is_valid、has_permission。i、j用于循环索引),否则避免使用单字符命名。遵循这些命名规范可以帮助你编写出更加清晰、易于理解和维护的Python代码。不过,需要注意的是,这些规范并不是强制性的,你可以根据自己的喜好和项目的实际情况进行适当调整。但是,在团队项目中,遵循统一的命名规范是非常重要的。
Python中的保留字(也称为关键字)是Python语言中具有特殊意义的标识符,它们被Python语言本身用作语法的一部分,因此不能用作变量名、函数名、类名或其他任何标识符的名称。Python的保留字在编写代码时具有固定的含义,它们定义了程序的结构和控制流。
#输出保留字列表
import keyword #import是导入包的意思,
print(keyword.kwlist) # 输出保留字列表所有保留字:
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这些保留字各自具有特定的用途,例如:
def 用于定义函数。class 用于定义类。if, elif, else 用于条件语句。for, while 用于循环语句。try, except, finally 用于异常处理。import 用于导入模块或包。True, False 表示布尔值真和假。None 表示空值或无值。and, or, not 是逻辑运算符。is, in, not in 是比较运算符或成员测试运算符。pass 是一个空操作语句,用作占位符。lambda 用于定义匿名函数(即没有名称的函数)。assert 用于断言,用于调试目的。yield 用于在函数内部生成值(在生成器函数中)。global 和 nonlocal 用于声明变量是在全局作用域或嵌套作用域中定义的。由于这些保留字具有特殊的语法意义,因此不能将它们用作变量名、函数名、类名等标识符。如果你尝试这样做,Python解释器会抛出一个SyntaxError异常,指出该标识符是保留字。
请注意,随着Python版本的更新,可能会有新的保留字被添加到语言中,或者现有的保留字可能会失去其特殊意义(尽管这在Python的历史中并不常见)。因此,建议查阅你所使用的Python版本的官方文档,以获取最新的保留字列表。