Python 基础知识

本贴最后更新于 1823 天前,其中的信息可能已经东海扬尘

前言

本文章主要简单介绍 python 的基本语法,是笔者在自学的过程中慢慢总结的,如果这其中有什么错误,大家可以及时提出来。

列表、字典、元组、字符串

列表

列表是一个值,它包含多个字构成的序列

列表用左方括号开始,右方括号结束,即[]

表中的值称为表项,用逗号隔开

1.1 用下标取得列表中的单个值

列表中第一个下标是0第2个是1以此类推
>>> spam = ['cat','dog','pig']
>>> spam [1]
'dog'
>>> spam = [['cat','dog'],[1,2,3]]
>>> spam[0][1]
'dog'

1.2 负数下标

数值-1指的是列表中的最后一个下标-2指的是列表中倒数第二个下标以此类推
>>> spam = ['cat','bat','rat']
>>> spam[-1]
'rat'

1.3 利用切片取得子列表

在一个切片中,第一个整数是切片开始处的下标,第二个整数是切片结束处的下标。切片向上增长,直至第二个下标的值,但不包括它。

其中,省略第一个下标相当于使用 0,或列表的开始;省略第二个下标相当于使用列表的长度,意味着分片直至列表的末尾

>>> spam = ['cat','bat','rat']
>>> spam[0:2]
['cat', 'bat']

1.4 用 len()取得列表的长度

>>> spam = ['cat','bat','rat']
>>> len(spam)
3

1.5 用下标改变列表的值

>>> spam = ['cat','bat','rat']
>>> spam[0]='pig'
>>> spam
['pig', 'bat', 'rat']

1.6 列表链接和列表复制

>>> [1,2,3] + ['cat','rat','pig']
[1, 2, 3, 'cat', 'rat', 'pig']

>>> [1,2,3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

1.7 用 del 语句从列表中删除值

>>> spam = ['cat','bat','rat']
>>> del spam[0]
>>> spam
['bat', 'rat']

字典

字典是许多值的集合,字典的索引可以使用许多不同数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对。

字典输入时带花括号{}

字典中的表项是不排序的,所以不能像列表那样切片

spam = {'name': 'branda','age': 22}

新增 value 值

info = {
    "student001":"branda",
    "student002":"hzy",
    "student003":"wj"
}
info["student001"] = "sandy"
print(info)
运行结果
{'student001': 'sandy', 'student002': 'hzy', 'student003': 'wj'}

新增一对键值

info = {
    "student001":"branda",
    "student002":"hzy",
    "student003":"wj"
}
info["student004"] = "candy"
print(info)
运行结果
{'student001': 'branda', 'student002': 'hzy', 'student003': 'wj', 'student004': 'candy'}

删除操作

del info[student004]

元组

元组输入时用圆括号()

元组不能让它们的值被修改、添加或删除

元组其实和列表差不多,也是存一组数,只是它一旦创建,就不能被修改

元组只有两种方法,一个是 count,一个是 index

如果元组中只有一个值,你可以在括号内该值的后面跟上一个逗号,告诉 python 这是一个元组;否则,python 将认为,你只是在一个普通括号内输入了一个值。

>>> type(('hello',))
<class 'tuple'>
>>> type(('hello'))
<class 'str'>

元组进行连接组合

>>> tup1 = (1,2,3)
>>> tup2 = ('cat','rat')
>>> tup3 = tup1 + tup2
>>> tup3
(1, 2, 3, 'cat', 'rat')

元组中的元素是不允许删除的,但可以使用 del 语句删除整个元组

元组之间可以使用 + 和*,即允许元组进行组合连接和重复复制

元组可以进行切片操作

>>> tup = (1,2,3,4,5)
>>> tup[0:3]
(1, 2, 3)

对元组进行操作的内建函数

cmp(tup1,tup2):比较两个元组元素

len(tup):返回元组中元素的个数

max(tup):返回元组中元素最大的值

min(tup):返回元组中元素最小的值

tuple(seq):将列表转化为元组

元组的方法(元组没有列表中的增、删、改的操作,只有查的操作)

tuple.index(obj):从元组中找出某个值第一个匹配项的索引值

tuple.count(obj): 统计某个元素在元组中出现的次数

字符串

字符串常用方法

1)	count()
name = 'branda hou'
print(name.count('a'))
运行结果
2 
2center()
name = 'branda hou'
print(name.center(50,'-'))
运行结果
--------------------branda hou--------------------
3)find()   # 用法不太理解,后期添加说明
name = 'branda hou'
print(name.find('hou'))
运行结果
7
4index()  # 用法不太理解,后期添加说明
product = [
    ('sun','tester'),
    ('branda','leader'),
    ('hou','manager')
]
print(product.index(('hou','manager')))
运行结果
2
5)isdigit()判断是否是整数
print('hh'.isdigit())
运行结果
False
print('2'.isdigit())
运行结果
True
6)join()
print(''.join(['1','2','3']))
运行结果
123
7)maketrans
p = str.maketrans("abcdef",'123456')
print("branda hou".translate(p))
运行结果
2r1n41 hou
注释abcdef分别对应123456然后把p传给branda hou
8)splict()
print('1+2+3+4'.split('+'))
运行结果
['1', '2', '3', '4']


文件操作

打开文件

f = open (D:\\wangjing\\bigworld.py)
data = f.read ()
print(data)

自动创建一个文件,并输入一段文字

f = open (D:\\wangjing\\bigworld.py,w)
f.write(我爱北京天安门)

在原文件的基础上追加内容,需要改变模式,变成追加模式“a”

f = open (D:\\wangjing\\bigworld.py,a)
f.write(我很喜欢看星空)

读前三行数据

f = open (D:\\wangjing\\bigworld.py,r, encoding = utf-8)
for i in range(3):
    print(f.readline())

遍历文件

f = open (D:\\wangjing\\bigworld.py,r, encoding = utf-8)
for line in f.readlines():
        print(line)

遍历文件,但不打印第 3 行

低效循环方法

方法是给每一行标下标,比如 0,1,2,3,4,5……,当下标是 2 的时候,把第 3 行内容替换成“我是分割线”

这种方法只适合读小文件,因为这种循环需要先把文件从硬盘中读到内存中,如果文件非常大,比如 20G,但一般内存只有 8G,就会造成内存不够,严重的时候造成崩盘

f = open (D:\\wangjing\\bigworld.py,r, encoding = utf-8)
for index,line in enumerate (f.readlines()):
           if index = 2:
              print(---我是分割线---)
              continue
              print(line)

高效循环方法

此方法从硬盘中把文件内容一行一行读到内存中,每读一行,覆盖原来的一行,使得每次内存中只保留一行

f = open (D:\\wangjing\\bigworld.py,r, encoding = utf-8)
count = 0
for line in f:
   if count == 2:
      print(---我是分割线---)
      count +=1
      continue
print(line)
conut += 1

文件修改

f = open("D:\\wangjing\\bigworld.py",'r',encoding="utf-8")
f_new = open("D:\\wangjing\\bigworld.bak.py",'w',encoding="utf-8")
for line in f:
    if "我来到了城市" in line:
        line = line.replace("我来到了城市","branda来到了城市")
    f_new.write(line)
f.close()
f_new.close()

通过脚本传参来进行文件内容的替换

Import sys
f = open("D:\\wangjing\\bigworld.py",'r',encoding="utf-8")
f_new = open("D:\\wangjing\\bigworld.bak.py",'w',encoding="utf-8")
find_str = sys.argv[1]
replace_str = sys.argv[2]
for line in f:
    if find_str in line:
        line = line.replace(find_str, replace_str)  f_new.write(line)
f.close()

with 语句

# with的作用就是帮我们自动关闭文件
with open("D:\\wangjing\\bigworld.py",'r',encoding="utf-8") as f:
    for line in f:
        print(line)

Sys 模块常见函数

sys.argv

sys.argv 实现从程序外部向程序传递参数
sys.argv 变量是一个包含了命令行参数的字符串列表, 利用命令行想程序传递参数. 其中,脚本的名称总是
sys.argv 列表的第一个参数。

sys.modules

sys.modules 是一个全局字典,该字典是 python 启动后就加载在内存中。每当程序员导入新的模块,sys.modules 将自动记录该模块。当第二次再导入该模块时,python 会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方法.

上面的脚本需要从命令行执行

1) win+R,打开命令行

2) 在命令行输入:python D:\wangjing\rep.py "我来到了城市" "branda 来到了城市"

3) 回车,如果没有报错,即运行成功

字符编码和转码

decode的作用是将其他编码的字符转换成unicode编码,如str1,decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2,encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。
 
因此,转码的时候一定要明白,字符串str是什么编码,然后decode成unicode编码,然后再encode成其他编码。
 
通常,在没有指定特定的编码方式时,都是使用的系统默认编码创建的代码文件
# 获取Python默认的编码方式
import sys
print(sys.getdefaultencoding())

运行结果:
utf-8
查看Windows默认的编码方式
在Windows平台下,进入DOS窗口,输入:chcp
可以得到操作系统的代码页信息,你可以从控制面板的语言选项中查看代码页对应的详细的字符集信息。
我的活动代码页为:936,它对于的编码格式为GBK。
下表列出了所有支持的代码页及其国家(地区)或者语言: 
代码页       国家(地区)或语言 
437          美国 
708          阿拉伯文(ASMO 708)
720          阿拉伯文(DOS)
850          多语言(拉丁文 I) 
852          中欧(DOS) - 斯拉夫语(拉丁文 II) 
855          西里尔文(俄语) 
857          土耳其语 
860          葡萄牙语 
861          冰岛语 
862          希伯来文(DOS)
863          加拿大 - 法语 
865          日耳曼语 
866          俄语 - 西里尔文(DOS) 
869          现代希腊语
874          泰文(Windows)
932          日文(Shift-JIS)
936          中国 - 简体中文(GB2312)
949          韩文
950          繁体中文(Big5)
1200         Unicode        
1201         Unicode (Big-Endian)
1250         中欧(Windows)
1251         西里尔文(Windows)
1252         西欧(Windows)
1253         希腊文(Windows)
1254         土耳其文(Windows)
1255         希伯来文(Windows)
1256         阿拉伯文(Windows)
1257         波罗的海文(Windows)
1258         越南文(Windows)
20866        西里尔文(KOI8-R)
21866        西里尔文(KOI8-U)
28592        中欧(ISO)
28593        拉丁文 3 (ISO)
28594        波罗的海文(ISO)
28595        西里尔文(ISO)
28596        阿拉伯文(ISO)
28597        希腊文(ISO)
28598        希伯来文(ISO-Visual)
38598        希伯来文(ISO-Logical)
50000        用户定义的
50001        自动选择
50220        日文(JIS)
50221        日文(JIS-允许一个字节的片假名)
50222        日文(JIS-允许一个字节的片假名 - SO/SI)
50225        韩文(ISO)
50932        日文(自动选择)
50949        韩文(自动选择)
51932        日文(EUC)
51949        韩文(EUC)
52936        简体中文(HZ)
65000        Unicode (UTF-7)
65001        Unicode (UTF-8)

1 unicodeutf-8GBK之间的转换unicode即万国码统一了世界上许多国家的编码目前在Unicode中一个中文占3个字节一个英文占1个字节

1537861174292

2 utf-8先转到unicode然后再转成gbkpython2
s = 你好
# utf-8先解码成unicode,然后再编码成gbk
s_to_unicode = s.decode(utf-8)
print(s_to_unicode)
s_to_gbk = s_to_unicode.encode(gbk)
print(s_to_gbk)

3 python3中转码python3中编码默认Unicode
a = "我很好"
# 1 Unicode转换成gb2312,因为python3中字符串编码默认是unicode编码,所以不需要decode,直接encode成想要转换的编码,而文件编码默认的是什么,需要看页面右下角的显示
通常默认utf-8(文件编码和字符串编码不一样)
unicode_gb2312 = a.encode('gb2312')
print('我的gb2312',unicode_gb2312)

# 2 gb2312转换成utf-8
# 当前字符为gb2312,所以要先decode成unicode(decode中传入的参数为当前字符的编码集)然后再encode成utf-8
gb2312_utf8=unicode_gb2312.decode('gb2312').encode('utf-8')
print('我是utf-8',gb2312_utf8)

# 3 utf-8转换成gbk
# 当前字符集编码为utf-8要想转换成gbk先decode成unicode字符集再encode成gbk字符集
utf8_gbk=gb2312_utf8.decode('utf-8').encode('gbk')
print("我是gbk",utf8_gbk)

# utf-8转换成unicode
# 注意当转换成unicode时 并不需要encode()
utf8_unicode=utf8_gbk.decode('gbk')
print('我是unicode',utf8_unicode)

函数介绍

函数定义

编程语言中的函数定义:函数是逻辑结构化和过程化的一种编程方法

python 中函数定义方法

def test():
    the function definitions
     x + = 1
     return x
详解
def:定义函数的关键字
test函数名
():内可定义形参
“”:文档描述非必要建议填写
x+ = 1:泛指代码块或程序处理逻辑
return 定义返回值

函数的类型

# 函数--面向对象
def funct1():
    "testing1"
    print('in the funct1')
    return 0

# 面向过程
def funct2():
    "testing2"
    print('in the funct2')

x = funct1()
y = funct2()

文件 a.txt 中已有内容,运行下面的程序后,a.txt 后面会追加上内容(a.txt 已创建)(追加时间)

import  time
def logger():
   time_fomat = '%Y-%m-%d %X'
   time_current= time.strftime(time_fomat)
   with open('a.txt','a+') as f:
    f.write('%s end action\n' %time_current)

def test1():
    print('in the test1')
    logger()

def test2():
    print('in the test2')
    logger()

def test3():
    print('in the test3')
    logger()


test1()
test2()
test3()

运行结果
in the test1
in the test2
in the test3
打开a.txt,页面显示的结果
aaa
222
333
2018-07-27 15:03:01 end action
2018-07-27 15:03:01 end action
2018-07-27 15:03:01 end action

函数返回值

# return:返回值可以返回哪些值,有以下三种情况
def test1():
    print('in the test1')

def test2():
    print('in the test2')
    return 0

def test3():
    print('in the test3')
    return1,'hello',['branda','alex'],{'name':'branda'}

x=test1()
y=test2()
z=test3()
print(x)
print(y)
print(z)



运行结果
in the test1
in the test2
in the test3
None
0
(1, 'hello', ['branda', 'alex'], {'name': 'branda'})
总结
1 返回值数=0返回None
2 返回值数=1返回objectreturn一个值就返回所定义的值
3 返回值数=2返回tuplereturn多个值就返回元组
为什么要有返回值
返回值会返回程序的执行结果后面的程序逻辑需要根据执行结果进行不同的操作


函数调用

调用方法
1	test()执行,()表示调用函数(),()内可以有参数也可以没有
参数
1	形参和实参
形参形式参数不是实际存在是虚拟变量在定义函数和函数体的时候使用形参目的是在函数调用时接受实参
实参实际参数调用函数时参给函数的参数可以是常量变量表达式函数用来传给形参
注意形参与实参必须一一对应否做运行会报错
区别形参是虚拟的不占用内存形参变量只有在分配时才分配内存单元实参是一个变量占用内存空间数据传向单向只能实参传给形参不能形参传给实参
举例说明1位置参数调用与形参顺序一一对应
def test(x,y):
    print(x)
    print(y)
test(1,2) # 位置参数调用
此处形参是x和y实参是1和2
举例说明2关键字参数调用与形参顺序无关
def test(x,y):
    print(x)
    print(y)
test(x=1,y=2) # 关键字参数调用


举例说明3
def test(x,y):
    print(x)
    print(y)
test(3,y=2) # 3直接传参给x,可以成功运行
举例说明4
def test(x,y):
    print(x)
    print(y)
test(3,x=2) # 会报错,因为3传参给了x,后面的2也传给了x,x有多个值
举例说明5关键字参数是不能写在位置参数前面
def test(x,y,z):
    print(x)
    print(y)
print(z)
test(3,y=2,6) # 运行会报错,因为y=2 是关键字参数,后面的6是位置参数,关键字参数是不能写在位置参数前面

函数的非固定参数

1默认参数
def test(x,y=2):
    print(x)
    print(y)

test(1)
运行结果
1
2
默认参数特点调用函数的时候默认参数非必须传递比如上面调用test()的函数的时候y默认值为2用途比如默认安装等
2参数组
提问如果实参不固定如何定义形参?
形参以*开头以args命名的一个变量名它可以接受多个实参并把多个实参放在一个元组里此处命令可以随意设置比如可以写成*alex,但规范的写法就是*args建议按规范写法来
def test(*args):
    print(args)
test(1,2,3,4,5)
运行结果
12345
或者
def test(*args):
    print(args)
test(*[1,2,3,4,5])
运行结果
12345

位置参数和参数组联合使用:
*args接收N个位置参数转换成元组形式
def test(x,*args):
print(x)
    print(args)
test(1,2,4,6,5)
运行结果
1
(2,4,6,5)
3如果调用函数的时候传的是字典值函数应该如何设计尼
**kwargs接收N个关键字参数转换成字典的形式 
def test2(**kwargs):
    print(kwargs)

test2(name='branda',age=20)
运行结果
{'name': 'branda', 'age': 20}
完善版
def test2(**kwargs):
    print(kwargs)
    print(kwargs['name'])
    print(kwargs['age'])

test2(**{'name':'branda','age':20})
运行结果
{'name': 'branda', 'age': 20}
branda
20
4位置参数和**kwargs联合使用
def test3(name,**kwargs):
    print(name)
    print(kwargs)
test3('branda',age=21,sex='F')


运行结果
branda
{'age': 21, 'sex': 'F'}

5默认参数和**kwargs联合使用
def test4(name,age=10,**kwargs):
    print(name)
    print(age)
    print(kwargs)

test4('branda',sex='m',hobby='swimming')
运行结果
branda
10
{'sex': 'm', 'hobby': 'swimming'}

6默认参数*args**kwargs联合使用
def test4(name,age=10,*args,**kwargs):
    print(name)
    print(age)
    print(args)
    print(kwargs)
test4('branda',age=21,sex='m',hobby='swimming')
运行结果
branda
21
()
{'sex': 'm', 'hobby': 'swimming'}

作用域、局部与全局变量

1	局部变量
 在被调用函数内赋值的变元和变量处于该函数的局部作用域
def change_name(name):
    print("before change",name)
    name = 'branda'
    print("after change",name)
name = 'wj'
change_name(name)
print(name)
运行结果
before change wj
after change branda
wj
全局变量
 在所有函数之外赋值的变量属于全局作用域”,处于全局作用域的变量被称为全局变量
案例1
school = 'oldboy'
def change_name(name):
    print("before change",name,school)
    name = 'branda'
    print("after change",name)
name = 'wj'
change_name(name)
print(name)
print(school)
运行结果
after change branda
wj
oldboy
案例2
a = 4
def b():
    a = 8
    print(a)
print (a)
b()
运行结果
4
8
有4条法则可以用来区分一个变量是处于局部作用域还是全局作用域
1 如果变量在全局作用域中使用即在所有函数之外),它就总是全局变量
2 如果在一个函数中有针对该变量的global语句它就是全局变量
3 否则如果该变量没有用在赋值语句中它就是全局变量
4 但是如果该变量没有用在赋值语句中它就是全局变量
def spam():
    global eggs
    eggs = 'spam' # 全局变量,有针对eggs变量的global语句
def bacon():
    eggs = 'bacon' # 局部变量,有针对它的赋值语句
def ham():
    print(eggs) # 全局变量,既没有针对它的赋值语句
也没有针对它的global语句
eggs = 42 # 全局变量
spam()
print(eggs)
运行结果
spam

递归

在函数内部如果一个函数在内部调用自身本身这个函数就是递归函数
递归特性
1 必须有一个明确的结束条件递归最多可以调999层
2 每次进入更深一层递归时问题规模相比上一次递归都应有所减少
3 递归效率不高递归层次过多会导致栈溢出
def calc(n):
    print(n)
    if int(n/2) >0:
        return calc( int(n/2))
calc(10)



高阶函数

定义:变量可以指向函数函数的参数能接收变量那么一个函数就可以接收另一个函数作为参数这种函数据称为高阶函数
例子
def add(a,b,f):
    return f(a) + f(b)
res = add(3,-6,abs)
print(res)
psabs()函数返回数字的绝对值

模块初识

标准库

Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能
Python标准库的主要功能有:
1)文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能
2)文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能
3)操作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、日志(logging)等功能
4)网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能
5)网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架
6)格式支持,包含HTML,SGML,XML的处理。
7)其它功能,包括国际化支持、数学运算、HASH、Tkinter等

常见模块

sys 模块

1) sys.argv

功能:在外部向程序内部传递参数

案例

第一步:

打开 pycharm,输入以下程序

import sys
a = sys.argv[1]
print(a)

然后保存,文件名为 sys_model.py

第二步:打开 cmd

此处有一个问题,就是需要获取脚本路径

选择 sys_model.py,右击,选择 copy path

1537865756268

打开 cmd,进入对应的脚本目录下,如下图:

1537865787912

运行脚本:如下图:

1537865813667

如果想在脚本后面传两个参数,需要修改程序,如下:

import sys
a = sys.argv[1]
b = sys.argv[2]
print(a,b)

OS 模块
Python os模块包含普遍的操作系统功能
1)	os.name
输出字符串指示正在使用的平台。如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'
例:
import os
print(os.name)
2)	os.getcwd()
函数得到当前工作目录,即当前Python脚本工作的目录路径。
例:
import os
print(os.getcwd())
3)	os.listdir()
返回指定目录下的所有文件和目录名
例子:
import os
print(os.listdir())




pyc 文件是什么文件

Python 语言属于先编译后解释的语言
当python程序运行时编译的结果是保存在位于内存中的PyCodeObject中当python程序运行结束时python解释器则将PyCodeObject写回到pyc文件中当python程序第二次运行时首先程序会在硬盘中寻找pyc文件如果找到则直接载入否则就重复上面的过程

python 中的浅 copy 和深 copy

简介

1)深 copy 新建一个对象重新分配内存地址,复制对象内容。
2)浅 copy 不重新分配内存地址,内容指向之前的内存地址。
3)浅 copy 如果对象中有引用其他的对象,如果对这个子对象进行修改,对象的内容就会发生更改

浅 copy 例子

import copy
person = ['name',['saving',1000]]
p1 = copy.copy(person)
p2 = copy.copy(person)
p1[0] = 'hzy'
p2[0] = 'branda'
p1[1][1] = 500
print(p1)
print(p2)
运行结果
['hzy', ['saving', 500]]
['branda', ['saving', 500]]

深 copy 例子

xs = [[1,2,3],[4,5,6],[7,8,9]]
zs = copy.deepcopy(xs)
xs[0][0] = 0
print(xs)
print(zs)
运行结果
[[0, 2, 3], [4, 5, 6], [7, 8, 9]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]





split()函数

基本用法:
split()函数通过指定分隔符对字符串进行切片,运行的时候会生成列表
例1 通过|分隔符进行切片
a = '100100|天津|good'
print(a.split('|'))
运行结果:
['100100', '天津', 'good']

例2 切片后,取值(比如取good)
a = '100100|天津|good'
print(a.split('|')[2])
运行结果:good

strip()函数

基本用法:
该函数的作用是去除字符串开头和结尾处指定的字符,不会去除字符串中间对应的字符
当strip()为空时,默认删除空白符(包括'\n', '\r',  '\t',  ' ')
例1:删除字符串ahh前面的空白符
a = '   ahh'
print(a.strip())
运行结果:
ahh

例2:删除字符串hhaah中前后的h
a = 'hhah'
print(a.strip('h'))
运行结果:
ha

免责申明: 以上内容大部分来自网络和选自 AL Sweigart 的《Python 编程快速上手--让繁琐工作自动化》,若有侵权,请及时告知

  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    534 引用 • 671 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • syavingcs

    😄 不错,社区可以多发一些技术上面的知识

    1 回复
  • branda2019wj
    作者

    谢谢,大家都可以把工作的知识整理分享