Python3 入门到精通

这篇博客详细介绍了Python3的学习路径,包括为何选择Python3而非Python2,基础概念如数据类型、数字、字符串、列表、元组、字典和集合的操作,以及条件控制、循环语句、函数、装饰器等核心概念。此外,还涵盖了进制表示、字符串的切片和运算、列表的增删改查、元组的特性、字典的增删改查、集合的运算和条件控制等内容,是Python初学者的宝贵资源。
摘要由CSDN通过智能技术生成

 人生苦短,我学python

“Life is short ,I Use Python”,Python 之所以可以那么火,是因为它不但功能强大(web、爬虫、AI、数据挖掘与大数据分析、机械学习等等),而且还非常易学(Python 都已经进入部分小学教材了!),如果人的一生只能学习一门语言,我的选择是 Python ..

碎碎念不多废话,主要目的是记录和再走一遍基础。

 

Python2 还是 Python3 ..

如果是两年前问题,毫无疑问Py2,因为那时候Py2的库大部分没有支持Py3,现在有一点点流行的库都会Py3都会有,而且,Py2官方快不维护了,Py3才是未来!

安装过程:官网下载最新版本:https://www.python.org  ,双击 python-3.x.x.exe  ,勾选 Add Python 3.x to PATH,单击开始安装 ,完成~。安装成功之后,如果有添加环境变量,按 Win+R 键,输入 cmd 调出命令提示符,输入 python即可进入python交互模式界面,也可以找到 idle ,双击进入也可进入交互模式界面。。

 

基础点

 - 编码:默认utf-8,使用  # -*- coding: cp-1252 -*- 改变编码;

 - 注释:# 或 ''' 或 """;

 - 变量:字母或下划线 _开头、区分大小写(同php),变量无限定义类型但必须赋值;

 - del:删除变量,如 a = 123# 定义变量, del a # 删除变量

 - 运算符:除 整除 //  、幂 ** 外,其它与php相差不多,但不支持 && || 的写法;

 - 代码块相对php等语言使用{ ... } 表示代码块,Python使用缩进来表示代码块、一行语句太长可用反斜杠(\)分行;

 - 输入输出:input()等待输入,print(xxx, end=',')可输出全部类型数据,注意这里参数end,是每个内容间的连接字符;

 - 模块:模块即文件,使用不同的模块需要  import 或者 from...import 导入;

 - 解释器:支持交互式编程和脚本式编程

 

python3数据类型

Python3 中有六个标准的数据类型:

  • Number(数字): int、float、complex(复数)、bool(布尔值之所以在这里,因为py2中没有True或False,只有0或1)
  • String(字符串):注意 转义符:/   连接符:+*  索引和切片:str[n]、str[n:m] 值不可变
  • List(列表): List写在方括号之间、如 ["this","is","list"],可以被索引和切片可被+*拼接重复
  • Tuple(元组):List写在小括号之间、如 ("this","is","list"),可以被索引和切片可被+*拼接不可重复
  • Set(集合):使用大括号 { } 创建,不可被索引和切片可被+*拼接不可重复、和高中数学一样可以作交集、并集、差集等运算
  • Dictionary(字典):{key:val...}的映射关系,特点类似php的数组,key不可不可重复

Python3 的六个标准数据类型中:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)

 

数字(number)

 - 进制表示:二进制:0b1011、八进制:0o13 、十六进制:0xb都表示十进制的 11 

 - 进制转换:二进制:bin( 0o13 )、八进制:oct(0o13) 、十进制:int(0o13)、十六进制: hex(0o13)

 - 布尔值:True 或 False,首字符必须大写

 - 常用函数abs(x):取绝对值、max(1,2,3):取最大值、min(1,2,3):取最小值,pow(2,4) :相当于2**,round(2.678,2):四舍五入保留n位数...

import math 之后,math.ceil(x):向上取整、math.floor(x):向下取整..

import random之后,random.randrange(100,999) :在100-999内随机一个数..

 

字符串(string)

定义测试字符串:a="hello "; b = "world"

 - 切片:访问字符串中的值,如a[0] # "h",a[0:2] # 'he',发现左闭右开原则,不包含第三个字符串。

 - 运算:a+b # 'hello world',a*3 # 'hello hello hello ',"wo" in b # True

 - 格式化:print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

 - 转义符(\):\(在行尾时),表示续行(纯粹为了好看),其它类似PHP,如\\,\',\n,\f等

 - 常用函数:

a.capitalize():第一个字符大写,a.lower():全部小写,a.upper():全部大写...

a.count("o",0,10):在字符串ad的[0:10]间“o”出现的次数,a.find("o",0,10):“o”出现的位置,没有则“-1”,a.index("o",0,10):同find,没有则报异常...

a.isalnum():字符串a是否全部是数字或字母,a..isalpha():是否全部是字母,a.isdigit():是否全部是数字,a.isdigit():是否全部是数字...

a.replace("h","H"):替换子字符串,len(a):字符串长度,max(a):最大的字母,min(a):最小的字母,a.strip():去除两边空白符

由字符串常用内建函数可见,python一切皆对象的特性..(意思是说,字符串本身就是一个对象)

 

列表(list)

定义一个测试列表:list = [1,"a","2","b"]

 - 切片:访问列表中的值,同字符串,如:list[0] # 1、list[-2:] # ['2', 'b']

 - 增:b.append("new"):末尾添加元素"new"

 - 删:del list[0],删除第0个元素,同b.pop(0),将第0个元素弹出,通过append和pop可以将列表作为栈使用

 - 改:list[0] = [1,2] ,将第0个元素改为[1,2]列表(嵌套)

 - 运算[1,2]+[2,3] #  [1, 2, 2, 3]

 - 常用函数:

 len(list):计算列表元素数量,max(list):列表中元素最大值,min(list):列表中元素最小值,list((1,2,3))将元组转换为列表,这里注意的是,之前定义了个变量list = xxx,所以使用list()会保错,所以,定义变量时不要使用关键字..

list.count(2):计算列表中元素2出现的次数,list.index(2):计算列表中元素2第一次出现的索引位置...

list.insert(2,"new"):在索引2中插入元素"new",list.remove("new"):移除第一个指定的元素..

list.sort():排序,默认升序,list.sort(reverse=True):降序,list.reverse():将原列表倒序

 

元组(Tuple)

Python 的元组与列表类似,不同之处在于元组的元素不能修改;

定义一个测试元组:t = (1,"a","2","b")

 - 切片:访问元组中的值,发现切片都是相同的,eg: t[:10:2] #前十个数中,每2个数取一个

 - 运算:(1,2)+(2,3) #  (1, 2, 2, 3),len((1, 2, 3)) #  3 ,3 in (1, 2, 3) #  True,for x in (1, 2, 3): print (x,)

 - 常用函数:tuple([1,2,3]):转元组类型

除了对元组元素修改的函数外(eg:sort、remove、append),其它与列表类似(eg:index、count)

 

字典(dict)

定义一个测试字典:d = {"a":1,"b":2}

 - 增删改查:d["c"] = 3 # 增 、 del d["c"] # 删 、 d["a"] = "not 1" # 改、 d["a"] # 查 (不支持切片)

 - 键的特性:如有重复,取最后一个; 并且key的类型不可是dict\set\list\tuple

 - 常用函数:

d.clear():清空字典键值、d.get("a"):查询"a"对应的值,无则返回none,"key" in d:"key"在字典d是否存在、list(d.keys()):取出全部key,并转为列表、list(d.values()):取出全部val,并转为列表,d.pop("a"):放回并弹出指定key-val

c = d.copy()相当于另外创建一个和d一样的字典c,这里区分c = d,这种方式只是将c和d同时指向同一内存空间,相当于php中的 $c = &$d,而c = d.copy()才相当于 $c = $d

 

集合

集合(set)是一个无序的不重复元素序列。(完全等同高中数学的集合知识)

定义一个测试集合:s = {"a",2,"c",2}  # 2只会保留一个

 - 新增:s.add("new") # 添加一个元素、 s.update({1,2,3}) # 添加多个元素(不支持切片)

 - 删除:s.remove("new") # 不存在报错 、s.discard("new") # 不存在不会报错、s.pop() : 随机删除一个元素、s.clear():清空集合元素

 - 运算:{1,2,3} & {2,3,4} # 取交集 、{1,2,3} | {2,3,4} # 取并集、{1,2,3} - {2,3,4} # 取差集 、s1.issubset(s2}) # 判断s1是不是s2的子集、s1.symmetric_difference(s2) # 去掉s1和s2都有的元素的集合

总之,高中数学用过的运算都得以实现

 

条件控制

Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else

if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3
  • 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  • 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  • 在Python中没有switch – case语句。
  • py的三目运算: print(x if(x>y) else y)  而不是 print( x > y ? x : y )

 

循环语句

Python中的循环语句有 for 和 while。( for循环类似php中的 foreach 循环 )

# while 循环
counter = 10;
while counter <= 20:
	counter+=1;
	print(counter);
else:
	pritn("没有了");

# for 循环
a = [1,2,3,4,5,6,7,9,10,11];
for x in a:
	if x%2 != 0:
		print(x);
else:
    print("没有了")

最大的特色是循环后还有 else:语句块,其它诸如 continue 、 break 不变。

 

函数

相对于其它语言,定义python的函数基本结构:

def 函数名(参数列表):
    函数体

特色:

 - 定义:以 def 关键词开头,定义方法与众不同啊!

 - return: 无 return时默认结果为None,return可返回多个值,多个值会集合到元组内返回。

 - 不定长参数:参数前添加 * 符号可传递任意多的参数,参数们会通过一个tuple传递进入函数体内部。

 - 关键字参数:默认关键字参数这样定义**kw,然后调用函数时,通过(end="123")的方式传入任意参数。

 - 匿名函数:定义的方式也很特别,如:lambda [arg1 [,arg2,.....argn]]:expression。

 - 传入函数类似PHP的可变函数,将函数名称作为参数传入,在传入的参数后加上括号即可调用传入函数。

 - 返回函数:在函数内部定义函数,并且将内部函数名称返回,即,在调用获取返回的结果后加上括号才能获取真正的结果,想想有什么用..

 

装饰器

python 里一切皆对象,由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。

# 这里就用了 返回函数
def decorator(func):
    def wrapper(*args,**kw):
        print("to do something...")
        func(*args,**kw)
    return wrapper

# 只需要在需要修改的额函数中添加@装饰器名称
@decorator  # 相当于执行decorator(f1(a,b))
def f1(a,b):
    print(a+b)

f1("hello ","world!")

 装饰器的存在意义:批量修改函数,只要在需要修改的函数上加装饰器

 

迭代器

简单认为迭代器是可以记住遍历的位置的对象,有两个基本的方法:iter() 和 next()

  •  - iter(): 获取可迭代对象身上的迭代器, 会调用可迭代对象身上的iter的方法
  •  - next():获取迭代器中的下一个值,会调用迭代器对象身上的next的方法
>>>list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2

由此可见,python 在输出一个迭代器的元素之后,指针往下移,查找到下一个元素。

创建迭代器:需要在类中实现两个方法 __iter__() 与 __next__() 。

 

列表生成式

快速创建列表的方式,如下:

>>>[x * x for x in range(1, 11) if x % 2 == 0]
# [4, 16, 36, 64, 100]
>>>[m + n for m in 'ABC' for n in 'XYZ'] # 两层嵌套
# ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

# 对比map()函数
>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5]))
[1, 4, 9, 16, 25]

关于map()函数:map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。类似map()函数的还有reduce()、filter();

 

生成器

# 略 : https://www.liaoxuefeng.com/wiki/897692888725344/923029685138624

 

模块

# 略:https://www.liaoxuefeng.com/wiki/897692888725344/923030456892352

 

面向对象

#略:https://www.liaoxuefeng.com/wiki/897692888725344/923030496738368

 

更新待续..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值