1. 前言
最近玩服务器,需要服务器和本地的一个端口进行互交,查了一些资料,发现用 Python实现很简单,刚好我也想学学一些Python语法。我之前编程语言已经学习了C/C++,Java语言,所以就有这样一篇由其他语言快速入门Python的博客,本博客主要介绍Python的语法。本博客不太适合小白,适合有一定的编程基础的童鞋.
学习资料主要来自两处:
菜鸟教程
B站Python教程全套
本文原创,创作不易,转载请注明!!!
本文链接
个人博客:https://ronglin.fun/?p=207
PDF链接:见博客网站
优快云: https://blog.youkuaiyun.com/RongLin02/article/details/115770356
2. 搭建环境
2.1. 下载Python
官方网站:https://www.python.org/
我这里直接下载3.9版本的:Windows版Python3.9
篇幅原因,安装过程不附加图片,这里简单提一下,Add Python 3.9 to PATH选项可以勾一下,把Python添加到系统环境变量里,可以省很多麻烦.然后为了图省事,可以直接选择Install Now,剩下的全部由它自己配置,也可以选择Customize installation自己配置过程。
查看是否安装成功,就直接输入python

会弹出来一个版本号,我的是3.9.4,然后进入编辑python模式,可以输入Ctrl+Z或者exit()退出。
如果没有,可以查看一下是否没把Python添加入PATH变量中。
2.2. 开发工具
我这里用PyCharm,这里有一篇比较详细的教程:PyCharm 安装教程(Windows)
当然下载完直接下一步就行了,下载有专业版和社区版,专业版付费有30天试用,社区版免费,我用的社区版。

然后一步一步ok就行了,其中有一个64bit(64位系统)和添加环境变量勾上就行了。
然后开始新建一个项目,需要注意的是第一个Location的路径就是project的根路径。

3. Python基本语法
学语法是一件比较枯燥的事,但是完事开头难,熟能生巧!
看下边的说明之前,先看Python语法的简介:Python3 基础语法
3.1. 输入与输出
先来输出print()函数
先来两个文档:
print() 函数
print 函数用法总结
简单的说明,Python打印命令为print,一条指令的结尾不需要分号,所以一条简单的输出语句
print('Hello World')
就输出了一条Hello World且带有换行,再来看文档中的用法
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
objects – 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
sep – 用来间隔多个对象,默认值是一个空格。
end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
file – 要写入的文件对象。
flush – 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
eg:
print('Ronglin','is','handsome',sep='&', end='\t')
print('print','test')
效果:
Ronglin&is&handsome print test
文件输出也很简单,格式如下:
# 'a' open for writing, appending to the end of the file if it exists
# '+' open for updating (reading and writing)
fp = open('./test.txt','a+')
print('ronglin','is','handsome',file=fp)
fp.close();
用一个“文件指针”指向一个文件,然后作为参数传入到print中即可,有关文件的操作,API中有很详细的说明
然后是输入函数input()
输入函数很简单,用法就是 a = input('输入一个信息')括号里的字符串就是提示信息,input函数将用户的输入作为一个字符串返回,所以要想输出整数,一般可以用强制类型转化例如a =int(input('输入一个整数')).
3.2. 数据类型
Python 是强类型的动态脚本语言,对于我是C语言入门来说,转入Python就好理解多了。
详细说明:Python3 变量类型
Python 不同于C,不需要类型声明。可以直接拿来用。而且每一个变量名有点类似于指针,变量名是一个引用,实际的数据在堆内存中,变量名就存储一个id号,而每一个数据块有3部分,id,type,value,分别是id号,数据类型和值。
Python有几个常用的数据类型:Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典)Set(集合)
3.2.1. Numbers
整型,就是一个整数
print('十进制',123)
print('二进制',0b1110)
print('八进制',0o123)
print('十六进制',0x123)
输出
十进制 123
二进制 14
八进制 83
十六进制 291
浮点型,就是小数,对应C里的float和double,浮点数的精度问题和C一样
可以导入一个包来处理浮点型
from decimal import Decimal
print(Decimal('1.1')+Decimal('2.2'))
布尔类型
和C++一样,有true和false两值,而且也可以作为数值加减,这和Java是不一样的。
而且有一个内置函数bool(),可判断对象的布尔值。
以下对象的布尔值为False:
False,数值0,None,空字符串,空列表,空元组,空字典,空集合。
数据类型可以通过强制类型转化函数相互转化
3.2.2. String
String的定义有3种,有单引号,双引号,三引号,C/C++和Java都是双引号,python都可,不过三引号可以多行存储,单双引号只能单行,所以三引号也可用作多行注释。
s = "a1a2···an" # n>=0
从左到右索引默认0开始的,最大范围是字符串长度少1,从右到左索引默认-1开始的,最大范围是字符串开头。和C不同,数组下标可以赋值双值,例如
s = '0123456789'
print(s[2:6])
输出2345。
加号(+)是字符串连接运算符,星号( * )是重复操作。
不同于Java和C++,Python中,可以用 * 号,比如,str = str * 2 和 str = str+str是一样的。
3.2.3. 列表
对比C/C++,Java中的数组。列表用 [ ] 标识。
一个列表中的元素的数据类型可以不同。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
列表的创建有2种方式,一个是[],一个是内置函数list()。
#1.使用中括号
list_01 = ['666',12,'python']
#2.使用list()函数
list_02 = list(['777',100,'Python'])
print(list_01,list_02)
运行结果:
['666', 12, 'python'] ['777', 100, 'Python']
同时,列表元素是有序的,索引映射唯一的数据,可以动态分配和回收内存。
有一些常见的方法:
索引:比如list_01.index(‘666’),就会返回’666’在列表的索引,如果不存在返回一个ValueError,如果有多个,返回第一个。
然后就是最常用的list_01[1],直接获取索引为1的值,同时因为python是支持负数索引的,从右到左,索引从-1到-n。
切片:获取列表中多个元素,语法如下:
列表名[start:stop:step]
切片的结果是原列表的拷贝,范围是[start,stop),step默认为1,同时也都支持负索引。
in/not in:可以判断一个元素是否在list中,比如’666’ in list_01。而且in还可用于遍历,语法格式:for 临时变量 in 列表名,这个临时变量就会把列表中的变量依次取出来。
列表生成式,语法格式[i*i for i in range(1,10)]生成就是 1,4,9…81这样的列表
3.2.4. 元组
元组是另一个数据类型,类似于 List(列表)。
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
创建方式两种
#1.用()创建
t = ('666',256,'hehe')
#2.使用内置函数tuple()
t1=tuple(('777',123,'hello'))
print(t,t1);
输出结果
('666', 256, 'hehe') ('777', 123, 'hello')
注意事项,单个元素的元组创建方式(123,)一定要加逗号。元组是一个不可变对象
3.2.5. 字典
字典很像C++和Java中的map,是一个映射关系的键值对,一个key对应一个value。字典无序序列,可变序列。
创建方式两种
#1.用{}创建
dic = {'周一':1,'周三':3}
#2.使用内置函数dict()
dic2 = dict(周一 = 1)
print(dic,dic2)
输出结果:
{'周一': 1, '周三': 3} {'周一': 1}
常用方法:
字典元素的获取:1.dic[‘周一’],2.dic.get(‘周一’),两个有些区别,用[]如果key不存在,则报错,get则返回None;
key的判断:in / not in 这个和list的用法一样的 key in dict 返回true或者false;
视图操作:
keys(),获取字典中的所有key,返回值类型为dict_keys可以作为list()函数的参数生成一个list;
values(),获取字典中的所有value,返回值dict_values;
items(),返回所有键值对,数据类型为元组。
遍历方式,for i in dict i的值是dict中的keys的遍历。
字典生成式,格式如下
a=[1,2,3]
b=[4,5,6]
dic = {a:b for a,b in zip(a,b)}
输出结果
{1: 4, 2: 5, 3: 6}
3.2.6. 集合
集合就是C++和Java中的set,是一个可变序列,相当于Python中的字典中的key,是一个可变序列
创建方式
#1.用{}创建
set1 = {1,2,3,4}
#2.用内置函数set()
set2 = set((2,3,5))
print(set1,set2)
输出结果:
{1, 2, 3, 4} {2, 3, 5}
很多方法和前边一样
就简单的说一下,集合生成式
s = {i*i for i in range(1,10)}
和列表的差不多,中括号改成大括号,就行了,需要注意集合是无序的。
3.3. 基本语句
先注意一个问题,Python语句不像C Java,语句与语句之间可以用大括号连接,Python语句甚至没有分号,所以Python中的上下级关系有严格的格式对齐!
3.3.1. 运算符
很多运算符号和C类似,但是有的地方也有不同。这里是Python3.9的规则
参考资料:Python3 运算符
算术运算符 : ‘+’ ‘-’ * / % ’ ** ‘//’
加 减 乘 和C的一样,/区别很大,返回值是一个浮点数,例如 11/2结果就是5.5,而//和C中的/是一样的,整除符号; 两个乘号的是是幂运算,%取模。
比较运算符: ‘==’ ‘!=’ ‘>’ ‘<’ ‘>=’ ‘<=’
和C语言一样,注意这里都是value的判断,如果想比较id,用is/not is
赋值运算符:’=’ ‘+=’ ‘-=’ ‘=’ ‘/=’ ‘//=’ ‘%=’ ’ *=’
和C一样,就是算术运算符号 加=
位运算符 : & | ^ ~ ‘<<’ ‘>>’
和C一样
逻辑运算符: ‘and’ ‘or’ ‘not’
and相当于c的’&&’ or是’||’ not就是’!’
优先级,资料来自菜鸟教程,Python3.0+

3.3.2. 分支结构
参考内容:Python3 条件控制
语法结构
if 条件表达式1:
执行1
elif 条件表达式:
执行2
else :
执行3
和C在形式上类似,但是需要注意的是,python没有大括号,所以对齐格式作为执行体的标准.
由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
条件表达式:X if 条件表达式 else y 这个像C中的三目运算符,符合条件就返回x,不符合就返回y
pass语句,pass语句什么都不做,就是一个占位符号,为了方便先搭建语法结构
3.3.3. 循环结构
参考内容:Python3 循环结构
先介绍一个函数:range()
用于生成一个整数序列,range(start,stop,step) start和step可以省略.默认step=1,start=0;生成的序列是一个[start,stop)整数序列
第一个循环结构while
while 条件表达式:
循环体
和C在形式上类似.但是while其实还可以带上一个else,在 python 中,while … else 在循环条件为 false 时执行 else 语句块.
第二个循环结构for_in
for和C的区别很大,格式为
for item in 序列
item就是临时变量,一般来说for可以这样用
for i in range(start,stop,step)
如果用C写for(int i=start;i<stop;i+=step)和上句中是等效的
for_in也可以用else,条件为false的时候就执行else中的语句
循环控制 break continue
效果和C一样,只能跳出来当前循环
3.3.4. 函数
参考内容:Python3 函数
函数,创建格式:
def 函数名 (输入参数):
函数体
[return xxx]
函数的用法和 C语言类似,但是也有不同,比如一个函数calcu(x,y),如果调用它的时候,这样传参数,calcu(y=10,x=5),那就会把10赋给y,x付给5,它会先找名称对应的变量名,优先赋值。这是关键字参数。
如果传参数,传入的是不可变对象,传入的参数不会改变,如果是可变参数,在函数中修改,会修改实参数。
return是可以返回多个参数的,多个返回值会作为一个元组,整体返回
同时如果当不确定要传入几个参数的时候,可以设置 def func(*arg)使用星号定义个数可变的位置形参,结果是一个元组,如果使用 def func(**arg) 定义个数可变的关键字形参,结果就是一个字典,案例代码:
def func01(*arg):
print(arg, type(arg))
return
def func02(**arg):
print(arg, type(arg))
return
func01(10, 30, 50)
func02(a=60, b=70, c=80)
输出结果:
(10, 30, 50) <class 'tuple'>
{'a': 60, 'b': 70, 'c': 80} <class 'dict'>
小技巧
1.当一个函数定义为calc(x,y,z)时,这时有一个list1=[10,20,30],想把list1中的三个元素,按顺序赋值为xyz,这时调用的时候可以用calcu(*list1).
同样,如果是字典用关键字参数,calc(x,y,z),有一个字典,dic={'a':100,'b':200,'c':300},调用的时候就可以用calc(**dic)
2.在函数定义的时候,可以给形式参数设置初始值,比如calc(x,y=10),这样如果调用的时候只传入了一个参数,那x为参入参数,y为默认参数,如果传入了2个参数,那么xy分别赋值为传入的实参
3.当想要设置,前两个参数为位置参数,后两个参数为关键字参数的话,可以加一个#号,例如:calc(a,b,*,x,y)这样的话,调用的时候只能calc(10,20,x=30,y=40)这样调用,*后边的参数必须要用关键字参数传参.
总结案例,一个较为复杂的参数表:calc(a, b=20, *arg, **arg2)
变量的作用范围:
局部变量,在函数内定义并且使用的变量,只在函数体内部有效,如果局部变量使用 global 声明,这个变量就变成全局变量
全局变量,函数体外定义的变量,函数体内外都可以调用
3.4. 异常
异常这个概念在Java中很常见,在Java中就是try catch语句,而在Python中也有相关的语句.
相关参考资料:Python3 错误和异常
3.4.1. try–except结构
格式如下:
try:
语句1
语句2
except 异常类型:
处理异常语句1
处理异常语句2
用法和Java的差不多,finally的可加可不加,测试案例:
try:
n1 = int(input('输入整数1\n'))
n2 = int(input('输入整数2\n'))
print(n1/n2)
except ZeroDivisionError:
print('除数为0了')
print('程序结束')
输出结果:
输入整数1
10
输入整数2
0
除数为0了
程序结束
当然,也可以except多个异常.而且还可以用traceback模块输出,使用方法一般是
import traceback
try:
n1 = int(input('输入整数1\n'))
n2 = int(input('输入整数2\n'))
print(n1/n2)
except ZeroDivisionError:
traceback.print_exc();
print('程序结束')
和Java类似.
3.4.2. try–except的其他结构
1.try–except–else
结构和try except类似,不过在最后可以加一个else,表示如果没有异常就执行else中的代码
2.try–except–else–finally
finally中的代码,不论是否产生异常,都会执行一遍
总结
至此,一些基础语法就看完了,时间仓促,水平有限,望赐教,下一篇有关Python的博客是Python之面向对象的学习,同样是对比C++ Java,快速熟悉python语法.
=w=
这篇博客适合有一定编程基础的读者,通过对比C/C++和Java,介绍了Python的环境搭建、基本语法,包括输入输出、数据类型、基本语句、异常处理等,并提供了相关学习资源和实例。

被折叠的 条评论
为什么被折叠?



