python刚刚入门,总结一下上网课 (小甲鱼) 时学到的python基本语法。
有一点c的基础,主要总结和c不太一样的地方。
+++++++++++++++++
声明📢 :
文章是我个人的笔记,写在这里和大家分享。里面的内容都是看小甲鱼python网课时自己总结的一些知识点。
有些内容,可能是我自己百度了之后,看了别人的文章之后的笔记。具体的网址都在文章中标记出来了。
++++++++++++++++
感谢支持。如果有什么建议,或者是文章内容有什么错误/问题,麻烦指出来,会及时改进的
+++++++++++++++++
语法入门结束之后,开始刷面试题了。如果大佬们有什么,关于语法入门之后怎么练习的建议,麻烦评论区指点一下。谢谢!
文章里面可能有很多英文,主要是因为一长串中/英文读起来容易找不到重点,将关键字用英语标出来, 对我个人读起来有些帮助
文章有些地方,不是顺序来写的。如果见到一些不认识的函数或者用法,可以检索一下文章,找到他们的定义
目录
注意项
- 不需要semicolon ;
- indentation缩进 代替{ }
- 变量不需要declare type,可以直接赋值。
- 不需要格式符号%d,%lf
- “” 或者’ '都可以用来标注字符串
- 每次print执行完了之后,都会默认换行。可以更改这一设定👇:
print("hello world", end='')
print('hola')
#end=规定每次打印结束以什么来结尾
- 一个print函数打印多个字符串
print(a, b, c)
#默认字符串用空格隔开
print("hello" * 3)
#打印“”里面的内容3次
结果:hellohellohello
print("hello" + "world")
结果:helloworld
打印特殊符号
转义符号
当要打印字符串里面的 ', " ,\n, \t, 或者位于句末的\时
print("lower\\")
结果:lower\
加上r
这个语句会自动给字符串中所有的 \ (不包括句末的\) 转义
string = r'\n\t'
print(string)
\n\t
打印多行的字符串
使用三个“ 或者 ‘
print('''hello
world''')
#打印结果会自动换行
hello
world
if else
不要忘记冒号和indentation
if a == 1:
print(' a == 1')
elif a == 2:
print(' a == 2')
else:
pass #什么都不写的时候用
三元操作
string = a if a < b else b
或者
if a < b:
string = a
else:
string = b
else其他用法
- 和while, for一起用
写在else里面的code,只在循环全部结束之后才会执行。也就是,如果中间break, 则不执行。
for i in list1:
if i == 6:
break
print(i)
else:
print('There is no 6 in the list')
如果 list1 = range(0, 10, 4)
0
4
8
There is no 6 in the list
如果list1 = range(0, 10, 3)
0
3
- 同理,else可以和try语句一起用。如果try语句中没有出现exception,则执行else里面的内容
try:
raise OSError
except OSError:
print('error')
else:
print('success')
while
不支持do while
a = 1
while a < 2:
print(a)
a += 1
#⚠️python不支持++,--
1
for
主要适用于list或者tuple
⚠️这里的i和j不是一个counter,而是这个list里面的一个元素element
for i in list1:
for j in i:
print(j)
运算符
逻辑运算符
&& and
|| or
! not
算数运算符
/ 为数学意义上的除法,整数之间相除可以得到小数
// 为floor除法,即使operands是小数,结果依然为整数
** 幂
- 比左侧的单目运算符高,比右侧的低
-3 ** 2 == -9
3 ** -2 == 0.11111
比较符
支持 3<4<5,相当于 3<4 and 4<5
类Class
命名规则:ClassName
类包含一系列的变量(属性attribute)和函数(方法)
避免变量与函数重名,否则变量会覆盖函数。
class Car():#如果在定义的时候,把其他的类当作参数放进来,那么可以继承这个类的所有变量或者函数
#变量
name = 'carro'
color = 'red'
#函数
def calculate_speed(self, distance, time):
speed = distance / time
print('%s is travelling at %f m/s' % (self.name, speed))
#⚠️ 除了在定义变量的部分,使用变量的话,都需要明确是哪一个对象(e.g. self.name而不是name)
类理解为一个模版,对象object(或者实例)则是这个模版刻出来的一个物品。类在定义的时候,是类。定义结束,是类对象。
我们可以创建一个对象:
car1 = Car()
print(car1.name)
print(car1.calculate_speed(30, 10))
carro
3.0
解释一下self:
当通过实例对象调用函数的时候,会把实例当作参数传入到函数里面。这是python 的绑定机制,self就是用来接收这个对象的 (个人理解,如果有错误,麻烦指出来,谢谢! )
继承
使用继承的方法,在前面有写过。
如果子类在定义的过程中,定义了和父类同名的变量/函数,会覆盖父类,但是并不会影响父类。
如果,想要保留父类同名的变量/函数,可以使用super
super(). 函数名()
init的定义,见魔法方法
class Parent:
def __init__(self):
print("I'm the parent")
class Child(Parent):
def __init__(self):
super().__init__() #在重新定义的时候,保留一下父类的内容
print("I'm the child")
parent = Parent()
print('----分界线----')
child = Child()
I'm the parent
----分界线----
I'm the parent
I'm the child
组合
在定义一个类的时候,创建另外一个类的object
class Female:
def __init__(self, input):
self.number = input
class Male(Female):
pass
class Class:
def __init__(self, inputF, inputM):
self.female = Female(inputF)
self.male = Male(inputM)
def statement(self):
print("We have %d female students & %d male students" % (self.female.number, self.male.number))
class1 = Class(25, 24)
class1.statement()
We have 25 female students & 24 male students
类vs类对象vs实例对象
对类对象进行操作,会对这个类的所有objects作出操作。如果,对类的一个object进行操作,则只对这个object生效。
(原理是,这个object自己生成了一个变量,覆盖了类里面定义的那个变量。从此之后,再更改类对象也不会影响这个object,因为已经被覆盖了)
一切皆对象
一开始看网课不是很明白,搜到了一个其他楼主的文章明白了一点。
下面总结一下我个人读完这个文章之后的理解。原文:(链接:https://blog.csdn.net/hpu120623/article/details/90745739)⬅️ 文章里面有具体的例子和流程图,推荐读!
所有所谓的数据类型(序列,字典,int,str)这些都是type这个类的对象。
那么具体的变量 (e.g. list1, dict1, 3, ‘hello’) 是相对应的数据类型的对象。
最后,type本身就是type这个类的对象。
所以,都是对象。。。
如果想要有更深刻的理解,建议可以自己平时多试试打印某个东西的type是什么。极大的可能性返回的都是<class ‘something’>.
数据类型
区分int & float
有无小数点
科学记数法
默认为float
a