由于煮波已经学过了C和C++,而且了解过java的语法,已经建立了语言的整体框架,所以学习python语法就不像学C++一样系统的一点一点的学习了,学习python语法,我就根据日常代码中遇到的或者是从C++代码中想到了在python中应该是什么场景来探讨python的相应知识;
下面是借助AI工具先大致了解了下python和C++的语法语法上的一些区别;
Python和C++是两种编程语言,虽然它们都有一些共同的语法特性,但也存在一些显著的区别。
这几天我正好也练习的也是这上述AI总结的三点,所以下面我就句几个实例帮助理解
python在声明或定义变量时是不需要指明变量类型,而C++/C/Java这类语言是需要指明类型的;
a=123
b=2.5
print(type(a))#<class 'int'>
print(type(b))#<class 'float'>
变量是可以根据存储数据自动识别数据类型,这一点跟auto很像
a=input()
b=input()
c=input()
print(type(a))#<class 'str'>
print(type(b))#<class 'str'>
print(type(c))#<class 'str'>
input是内置函数,用于读取键盘输入的数据,但是需要注意的是input读取的数据一律按照字符串处理;
也就是我们如果使用了流提取(从键盘输入数据),那么变量存储的都是字符串;
如果我想输入存储一个整形数据怎么办呢?
---->类型强转,python中的强转格式是把要强转的数据用括号括起来;
a=int(input())
print(type(a))#<class 'int'>
print也是内置函数,用于打印数据到显示器上;与Java很像,输入完数据后默认都会自动回车;
我们可以自己调整参数控制是否自动回车;
print(1,end=" ")
print(2,end=" ")
print(3,end=" ")
#1 2 3
这是常用的输入和打印的格式上的不同
在python中函数体是冒号(:)配合行缩进使用的;在同样的函行缩进数下,通常是同一个函数体;
for i in range (0,5,1):
print(i,end=" ")
#0 1 2 3 4
C++:for(int i=0;i<n;i++) python:for i in range (begin,end;step)---end是取不到的,范围是[begin,end-1]
i=0
while i<5:
print(i,end=" ")
i=i+1
#0 1 2 3 4
在python中,直接调整循环使用的还是break;这一点与C++时一样的;
i=0
while i<20:
print(i,end=" ")
i=i+1
if i==10:
break
#0 1 2 3 4 5 6 7 8 9
pass是C++中continue的效果,当然仍然可以使用continue,这是支持的
for i in range (0,10):
if i==5:
pass
else :print(i,end=" ")
#0 1 2 3 4 6 7 8 9
关键字def 声明为函数;
def add(a,b):
return a+b
ret=add(1,5)
print(ret)#6
def add(a,b):
return a,b
x,y=add(1,5)
print(x,y)#1 5
如果函数有多个返回值,而你只想用其中的部分返回值,那么你就可以使用_来接收,
def add(a,b):
return a,b
_,x=add(1,5)
print(_,x)#1 5
但这并不意味着,_就是专门用来接受变量的,_其实也是一个变量名字,想想标识符的命名规则,他是不是也是符合的,我们不仅可以用'_',还可以用"__","___"等等等;这是这种命名方式通常没有命名含义,所以就拿来存储不关心的数据喽!
1.有几个形参,传递几个实参
def add(a,b):
return a,b
2.形参使用参数列表 (*)
在形参上加上*,就是可变参数列表了
def f(*a):
n=len(a)
for i in range(n):
print(a[i],end=" ")
f(1,2,5,4,8)#1 2 5 4 8
class node:
def __init__ (self,id,name,age):
self.id=id
self.name=name
self.age=age
def __del__ (self):
del self.id
del self.name
del self.age
def debug(self):
print(f"id: {self.id}\nname: {self.name}\nage: {self.age}")
类其实就是封装了的成员变量和成员方法,方法就是函数,我们知道了,但是成员变量该怎么声明呢?
python中类的成员变量是以参数的形式在构造函数中存在的;当然也可以使用缺省值
类中的方法,都要显式的带上参数self,self相当于是类本身地址,这一点类似于C++中的this指针,不过是隐式的,这里的self必须是手动添加的;---debug方法为例
class node:
def __init__ (self,id,name,age):
self.id=id
self.name=name
self.age=age
def __del__ (self):
del self.id
del self.name
del self.age
def debug(self):
print(f"id: {self.id}\nname: {self.name}\nage: {self.age}")
def fact(n):
if n==1 :return n
return fact(n-1)*n
#
person1=node(1,"小红",18)
person1.debug()
1.构造函数(__init__) ----这里的左右两边各两个_
构造函数的作用是初始化成员变量 ---这一点无需多言
2.析构函数(__del__)
引用计数-->引用计数为0-->释放内存
析构函数类似于智能指针shared_ptr的引用计数原理,当多个对象指向同一块内存的时候,采取了引用计数的机制,当引用计数为0 的时候就会释放掉该内存空间;
并不是简单的出了作用域就会自动调用析构函数,是引用计数为0,才会调用析构函数