对比C++来学习python基础的小结

一点说明

  1. 先说明本人对于学习的一些看法,人在学东西的时候,要课本或老师来教的时候,首先应该明确受教者的基础在哪,像我们都会说汉语,但汉语的概念那么大,有些专有名词和其含义对于基础不同的受教者肯定陌生程度各有差别。所以本文并不一定适合所有人看,个人认为有过一定学习C++的基础,并正在学习python的同学来看是最合适的。因为我目前就处在这种尴尬的境地:既不精通C++,对python又是初学。
  2. 由上点,本文在对python里语法的一些概念的解读,如果其与C++中有类似或相同的,我会在每一个这样的概念后面做出:python的概念(C++的概念)。重复这样提醒是以防有新手大头鬼图省事看漏了这个概念而出现看不懂的情况
  3. 因为本人学艺不精,所以本文的个人理解部分,如果自认为不太严谨或会对初学者产生误导以及自知错误但用于理解记忆的地方都会用删除线标注。

简述个人历程

疫情期间因为这学期上C++课开始自学C++,去b占找到黑马程序员的C++教程自学,初步掌握了一些知识,后来在学校又学了细节全面的基础知识,刷很多编程题。最后因为实验室而借来同学学python的教材和网上搜黑马的教材自学python。

刚学过C++再去学Python有种手到擒来的容易感,或许是因为编译的语法可以大不一样,但编译的思想却一致,而且同时根据学Python时的些许不适感,更加强了我对分辨编译思想和编译语法的理解,前者是根本 是大体构架,后者是工具 是细节。

像:Python的判断语句循环语句那一行后面都要加 **:**而C++却是紧跟着(){}的结构,就这点来讲,还是感觉没有任何基础的人学C++的语法更容易记住。但这只是过来人的经验,没有完全考虑到初学者学习的已经知道答案后的见解罢了

  • 后文主要是面向学会C++后的同学观阅以及我个人进行自我复习。因为本人水平有限,是刚学完C++开始自学python的,而且C++更为简易,基础把,所以学会之后再看本人总结的效果应该更好
  • 本文只选取我个人学完C++后所不能熟悉或较难理解的知识点来总结,

python学习总结(通过对比C++知识)

一.学完C++不用很费力就能掌握的python知识

注释、整型数据类型(数字)、运算符(python多了一点)、条件,循环语句(括号都消失,语句要加一个
在这里仅点出,在后面会再写下他的语法用法。

二.四大数据类型

列表

用 [ ] 方括号 , 用来分隔
注:同一列表不需要数据类型相同,与c++数组不同
name_list=[‘Tom’, ‘Lily’,'Rose]

print('Tom' in name_list)

通用操作
xulie.index(数据) 返回该数据下标
len(xulie)        返回该序列长度
xulie.count(数据) 返回该数据在序列出现次数    
数据 in xulie     该数据在序列里返回1 反之为0

列表序列 . append()列表结尾追加数据

.extend 如果追加序列 a 追加数据

.insert(位置下标,数据)指定位置: 列表序列

del name_list del name_list[0]

name_list,pop(下标) 定位删除

name_list.remove(数据) 删除序列第一个匹配项
name_list.clear() 清空

直接用下标改/赋值
list[0]=1

.reverse()逆置

.sort()排序

复制

name_li1=name_li2.copy()

元组

定义: 小括号 ( )
tup3 = "a", "b", "c", "d" # 不需要括号也可以,只用双引号,默认是元组

空元组:var= ()

tuple(iterable) 将其他可迭代(能用遍历法遍历的)系列转变成元组

注:

  • 元组与列表仅不同于,元组元素不能修改,同时列表的其他性质与元组相同,但函数、方法因为元组元素不能修改的特性而缺少对应可以修改列表元素的部分。
  • 如果定义的元组只有一个数据,最好也在( )里面添加逗号,否则数据类型为唯一的这个数据的数据类型
  • 所谓元组的不可变指的是元组所指向的内存中的内容不可变。---- 类比C++引用,常量指针
字典

个人理解: 字典数据 = 元组:列表
注意:⼀般称冒号前⾯的为键(key),简称k;
冒号后⾯的为值(value),简称v。
遍历

for key in
for value in
for key,value in
for item in
键对值

字典序列[key] = 值

del() / del 删除对应键值对
clear() 清空

集合

个人理解; 与数学上的集合含义相同
定义: {} set()
注:

  • 空集合只能用set( ) 因为{ }是用来创建空字典
  • 集合会去掉重复的数据,且数据无序,所以也没有下标
运算意义
a|b并集
a&b交集
a-ba中包含b中不包含的元素(a集为全集,a与b的交集的补集)
a^b不同时包含于a、b的元素(a、b并集为全集,a与b的交集的补集)
.add() 不再是append`.remove() 括号里数据不存在会出错
.update() 可以连续加好几个,用,隔开 从左往右加数据.discard() 与上相反,不存在不出错
.pop()随机删除

三.个人觉得不熟悉的基础语法

1.print 输出

print( 变量 , end=’ ‘)
可以推测,print成员函数形参列表的第二个形参应该是 end=’\n’

2.import/from…import 导入模块,包?

语法 :
import somemodule 整个模块 module 导入 类比于C++里的#include< .h>
from somemocule import somefunc 类比于把模块里的部分函数引入/导入,

  • 可以在somefunc后面加 ,一次性导入多个这个模块的函数
    from somemocule import somefunc,fun1,fun2
  • 将somefunc换为 * 是将某模块的所有函数导入
3.运算符

算术
/ 除–x/y=x÷y
// 整除–与c++除(/)相同
** 乘方--x**y` = x的y次方

赋值
=幂赋值运算符c=a-> c= c的a次方//=` 取整除赋值 类似
海象运算符 可以在表达式内给变量赋值

成员运算符
in 指定序列 中寻找某变量,找到返回1, 找不到返回0
not in 相反
身份运算符
is 判断俩标识符是不是引用同一对象// 区别 == 只判断
not is

4.字符串

无单字符类型,单字符做字符串使用

字符串可以用方括号截取 – 可以想到C++ 里字符数组与指针的使用,或许说明了python中先让 字符串 分配给一个地址,再用字符串名做指针接收其地址
var1=' hello
var1[0]的值就是第一个字符:h
字符截取:var1[1:4]=var[:4] 第一个1可以省略,默认1,
可以用其与其他字符串拼接成新的字符串

无论单引号还是双引号都可以定义,但好像有区别,我忘了

字符串操作

操作符理解
+拼接
*字符串加*加数字n:自我复制n次
[]截取
[:]左闭右开 str[0:3]包括第一第二个字符
in/not in成员运算符
r/R原始字符串
%格式字符串

格式字符串(太多了,只会用输出哪个%d先)

三引号 跨行定义字符串
""" 所见即所得,想怎么输入怎么输 """

5.函数

语法很简单,也与C++的类似,先声明一个def 空格输入函数名,加个()用于形参列表。

重点在参数传递上
与C++不同的地方,是python各个数据类型就分配好了,可不可以被函数的赋值操作改变,或许是因为各个数据类型创建时就内置为地址传递类型或值传递类型。
整型,字符串,再加上一个元组,都是不可变前俩个和C++地址传递没有区别 ,元组是因为他的数据不可以更改。
列表,字典可变,可变

函数调用的时候,又可分为四个正式参数类型
必需参数:形参不是关键字吗? ,关键字参数, 顾名思义,关键字做参数,允许调用的参数顺序和声明不一致,python解释器能用参数名匹配参数值。必需参数就没这么好用,必须一致。
默认参数:与C++类似
不定长参数

  1. 形式1:(形参,*形参2)
  • 与C++的指针*区别开,加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
  1. 形式2:(形参,**形参2)
  • 加了两个星号 ** 的参数会以字典的形式导入

例(一个星号的):

def fun(arg1,*vartuple):
     print("输出:",arg1,vartuple)
fun(10,20,30)

输出
(10,(20,30))

尾语

其实对于我这么一个不爱整理知识(原因是感觉效率低,何况别人整理好了,感觉我直接用它的来练习好),而且初学python的语法(仅限语法,编程思维和C++学的没区别)的人,做这种小结和整理是很无趣和低效的,个人见解。举个简单的例子,我们汉语说的很好,不是因为我们精通汉语的所有语法,而是会自然自由的使用这个母语。其实对于所有自由学习者,不是为了应付学校考试而去学习某个东西的人,我自我认为最重要的还是去学会如何自然的使用它把,并用它来真正的做某些事情。
也许我写的东西都不算全面,而且可能因为些许不足而影响到后来的初学者们,但,我想说的是,像这类知识点总结的东西,我觉得完全没有必要因此而影响自己这么多,他们的作用仅限于完成一些别人去布置的任务来象征在别人眼中你已经学了这门语言而已。但只要也只有你真正去学习怎么去用这门语言来编一些程序,才是真正有意义的事情。所以接下来我还是去菜鸟编程刷刷编程题,多培养一点计算思维把。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值