当前位置: 首页 > news >正文

Python基础(一)

目录

前言

Python与C++的一下区别

动态类型

input

循环判断语句格式

for循环

 while循环

pass和break

函数以及函数参数

函数格式

函数可以有多个返回值

函数参数

类和对象

成员方法和成员变量

self和this指针

构造函数和析构函数


前言

由于煮波已经学过了C和C++,而且了解过java的语法,已经建立了语言的整体框架,所以学习python语法就不像学C++一样系统的一点一点的学习了,学习python语法,我就根据日常代码中遇到的或者是从C++代码中想到了在python中应该是什么场景来探讨python的相应知识;

Python与C++的一下区别

下面是借助AI工具先大致了解了下python和C++的语法语法上的一些区别;

Python和C++是两种编程语言,虽然它们都有一些共同的语法特性,但也存在一些显著的区别。

  1. 静态类型 vs 动态类型: C++是一种静态类型语言,需要在编译时声明变量的类型,并且在编译时会做类型检查。而Python是一种动态类型语言,变量的类型是在运行时确定的,不需要显式声明类型。这意味着在Python中可以更灵活地处理变量的类型,但可能会增加一些运行时的开销。

  2. 缩进 vs 花括号: Python使用缩进来表示代码块的结构,而C++使用花括号{}来定义代码块。这使得Python代码看起来更加简洁,但也需要注意缩进的正确性。C++的花括号可以更直观地显示代码块的开始和结束,但可能会使代码显得更加繁琐。

  3. 内存管理: 在C++中,程序员需要显式地进行内存管理,包括手动分配和释放内存。而Python有自动内存管理机制,使用垃圾回收器来处理内存管理,程序员不需要手动管理内存。这使得Python更容易编写和维护,但也可能带

 这几天我正好也练习的也是这上述AI总结的三点,所以下面我就句几个实例帮助理解

动态类型

python在声明或定义变量时是不需要指明变量类型,而C++/C/Java这类语言是需要指明类型的;

a=123
b=2.5
print(type(a))#<class 'int'>
print(type(b))#<class 'float'>

变量是可以根据存储数据自动识别数据类型,这一点跟auto很像

input

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

print也是内置函数,用于打印数据到显示器上;与Java很像,输入完数据后默认都会自动回车;

我们可以自己调整参数控制是否自动回车;

print(1,end=" ")
print(2,end=" ")
print(3,end=" ")
#1 2 3 

这是常用的输入和打印的格式上的不同

循环判断语句格式

在python中函数体是冒号(:)配合行缩进使用的;在同样的函行缩进数下,通常是同一个函数体;

for循环

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]

 while循环

i=0
while i<5:
    print(i,end=" ")
    i=i+1
#0 1 2 3 4 

pass和break

在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和this指针

类中的方法,都要显式的带上参数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,才会调用析构函数

相关文章:

  • 重学Java基础篇—Java 反射机制及其用途
  • 记金仓数据库的一次优化
  • 中兴B860AV1.1-T2/B860AV2.2/B860AV2.2U-中星微ZX296716斜片芯片-刷机包及教程
  • 【rdma tx data flow问题】
  • Go语言比较递归和循环执行效率
  • 01背包 Java
  • 复现QGIS-MCP教程
  • 《从单体到分布式:一个订单系统的架构升级》
  • 第37次CCF计算机软件能力认证 / T4 / 集体锻炼
  • 创建 Pod 失败,运行时报错 no space left on device?
  • 3. git config
  • 《AI换脸时代的攻防暗战:从技术滥用走向可信未来》
  • AIGC时代的新风口!MCP协议引领未来无限可能
  • 【RabbitMQ】延迟队列
  • C/C++ 与 Java IO 机制对比解析和流与缓冲的概念介绍
  • [GESP202312 五级] 平均分配
  • C语言今天开始了学习
  • 【python读取并显示遥感影像】
  • win日志
  • 仿真每日一练 | ABAQUS子程序DLOAD
  • 做项目挣钱的网站/太原seo
  • 文安做网站shijuewang/百度网盘电话人工服务
  • 晋中住房保障和城乡建设局网站/百度拉新推广平台
  • outlook企业邮箱怎么申请/如何优化培训方式
  • 在国外做盗版电影网站吗/企业seo关键词优化
  • 织梦中查看演示网站怎么做/专业网站优化排名