python基础_看这一篇就够了

本文详细介绍了Python的基础知识,包括内建的原子和集合数据类型,如布尔、列表、字符串和集;控制结构如for、while和if语句;异常处理;函数定义;以及面向对象编程,特别是Fraction类的实现,包括构造方法、str方法、add方法和eq方法。通过实例展示了Python的数据操作和面向对象特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python是一门现代、易学、面向对象的编程语言。

1.数据

在 Python 以及其他所有面向对象编程语言中,**类都是对数据的构成(状态)以及数据 能做什么(行为)的描述。**由于类的使用者只能看到数据项的状态和行为,因此类与抽象数据类 型是相似的。**在面向对象编程范式中,数据项被称作对象。一个对象就是类的一个实例。 **

1.1 内建原子数据类型

// 整除
在这里插入图片描述

  • Python 通过 bool 类实现对表达真值非常有用的布尔数据类型。布尔对象可能的状态值是 True 或者 False,布尔运算符有 and、or 以及 not。
  • 优先级从高到低 not and or
    false or true =true
    true or false = true
    false or false = false

1.2 内建集合数据类型

  • 列表
    在这里插入图片描述
    如果需要快速初始化列表,可以通过重复运算来实现,如下所示。
    在这里插入图片描述
    非常重要的一点是,重复运算返回的结果是序列中指向数据对象的引用的重复。下面的例子 可以很好地说明这一点。
    在这里插入图片描述
    构建数据结构的方法
    在这里插入图片描述
  • 字符串
    在这里插入图片描述
    在这里插入图片描述
  • set
    集(set)是由零个或多个不可修改的 Python数据对象组成的无序集合。集不允许重复元素, 并且写成由花括号包含、以逗号分隔的一系列值。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 字典
    keys、values 和 items 方 法均会返回包含相应值的对象。可以使用 list 函数将字典转换成列表。在表 1-8中可以看到, get 方法有两种版本。如果键没有出现在字典中,get 会返回 None。然而,第二个可选参数可 以返回特定值。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2 输入与输出

在这里插入图片描述
在这里插入图片描述

3 控制结构

三大结构

  1. for while 语句
  2. if 语句
  3. 迭代

3.1 for while 语句

3.2 if 语句

Python也有单路分支结构,即 if 语句。如果条件为真,就会执行相应的代码。如果条件为 假,**程序会跳过 if 语句,执行下面的语句。**例如,下面的代码段会首先检查变量 n 的值是否为 负。如果值为负,那么就取它的绝对值,再计算它的平方根。
在这里插入图片描述

3.3 列表解析式

下面结构表示1到 10中奇数的平方数
在这里插入图片描述
任意支持迭代的序列都可用于列表解析式
在这里插入图片描述

4 异常处理

  1. 语法错误
    SyntaxError : invalid syntax
    语句不符合语法规范
    eg:没有加‘ :’ 括号类型使用错误
  2. 逻辑错误,通常,这些运行时错误被称 为异常
    我们可以用try语句块调用print函数来处理这个异常。对应的except语句块捕捉到这个异常,并为用户打印一条提示信息。except会捕捉到 sqrt 抛出的异常并打印提示消息,然后会使用对应数字的绝对值来保证 sqrt 的参数非负。
    在这里插入图片描述
    程序员也可以使用 raise语句来触发运行时异常.
    在这里插入图片描述

5 定义函数

以 牛顿迭代法求平方根为例:
在这里插入图片描述

6 Python面向对象编程:定义类

6.1 Fraction 类

要展示如何实现用户定义的类,一个常用的例子是构建实现抽象数据类型 Fraction 的类。 我们已经看到,Python提供了很多数值类。但是在有些时候,需要创建“看上去很像”分数的数 据对象。
像3/5这样的分数由两部分组成。上面的值称作分子,可以是任意整数。下面的值称作分母,
可以是任意大于 0 的整数(负的分数带有负的分子)。尽管可以用浮点数来近似表示分数,但我 们在此希望能精确表示分数的值。 Fraction 对象的表现应与其他数值类型一样。我们可以针对分数进行加、减、乘、除等运 算,也能够使用标准的斜线形式来显示分数,比如 3/5。此外,所有的分数方法都应该返回结果 的最简形式。这样一来,不论进行何种运算,最后的结果都是最简分数。

6.1.1 类及构建方法

6.1.1.1 Fraction类及其构造方法

在这里插入图片描述
self是一个总是指向对象本身的特殊参数,它必须是第一个形式参数。构造方法中的self.num定义了Fraction对象有一个叫做num的内部数据对象作为其状态的一部分。同理,self.den定义了分母。这两个实际参数的值在初始是赋予了状态,使得新创建的Fraction对象能够知道其初始值。

调用方法
myfunction = Fraction(3,5)
在这里插入图片描述

6.1.1.2 show 方法

在这里插入图片描述
myf 唯一能做的就是显示存储在变量中的实际引用(地址本身)。
有两种办法可以解决这个问题。一种是定义一个 show 方法,使得 Fraction 对象能够将自 己作为字符串来打印。不幸的是, 这种方法并不通用。为了能正确打印,我们需要告诉 Fraction 类**如何将自己转换成字符串。**要 完成任务,这是 print 函数所必需的。

  • 方法1
    在这里插入图片描述
6.1.1.3 str 方法

之前默认实现是返回实例的地址字符串
我们使用__str__返回字符串。
在这里插入图片描述
在这里插入图片描述
后两者是‘3/5’是因为返回了字符串myf

6.1.1.3 add 方法

在这里插入图片描述
在这里插入图片描述
虽然结果是对的,但不是最简分数,最好的表达是3/4
我们需要一种方法寻找分子和分母的最大公约数(greatest common divisor,GCD)。

6.1.1.4 eq 方法

如果我们要比较 f1 和 f2时,只有在它们是同一个对象的引用 时,f1 == f2才为 True。这被称为浅相等.在当前实现中,分子和分母相同的 两个不同的对象是不相等的。
在这里插入图片描述
通过重写__eq__方法,可以建立深相等——根据值来判断相等,而不是根据引用
在这里插入图片描述

6.2 逻辑门与电路

最后一节介绍面向对象编程的另一个重要方面。继承使一个类与另一个类相关联,就像人们 相互联系一样。与之类似,Python中的子类可以从父类继承特征数
据和行为。父类也称为超类。

class LogicGate:
    def __init__(self,n):
        self.label = n
        self.output = None
        
    def getLabel(self):
        return self.label
    def getOutput(self):
        self.output = self.performGateLogic()
        return self.output

class BinaryGate(LogicGate):
    def __init__(self, n):
        super().__init__(n)
        
        self.pinA = None
        self.pinB = None
    def getPinA(self):
        if self.pinA == None:
            return int(input('Enter pin A input for gata ' + \
                        self.getLabel() + '--->'))
        else:
            return self.pinA.getFrom().getOutput()
        
    def getPinB(self):
        return int(input('Enter pin B input for gata' + \
                        self.gatLabel() + '--->'))

class UnaryGata(LogicGate):
    def __init__(self,n):
        super().__init__(n)
        
        self.pin = None
        
    def getPin(self):
        return int(input('Enter Pin input for gata' + \
                        self.getLabel() +'--->'))
    
class AndGate(BinaryGate):
    def __init__(self,n):
        super().__init__(n)
    def performGateLogic(self):
        
        a = self.getPinA()
        b = self.getPinB()
        if a == 1 and b == 1:
            return 1
        else:
            return 0
class Connector:
    
    def __init__ (self,fgate,tagata):
        self.fromgate = fgate
        self.tofate = tgate
        
        tgate.setNextPin(self)
    def getFrom(self):
        return self.fromgate
    def getTo(self):
        return self.tofate

    def setNextPin(self,source):
        if self.pinA == None:
            self.pinA == source
        else:
            if self.pinB == None:
                self.pinB = source
            else:
                raise RuntimeError('Error : NO EMPTY PINS')

Reference

Python数据结构与算法分析(第2版)作者: [美] 布拉德利·米勒 / [美] 戴维·拉努姆 译者: 吕能 / 刁寿钧

好的,我知道了。针对你的问题,我可以为你提供一些关于 Python 虚拟环境和环境变量配置的基础知识。 Python 虚拟环境可以帮助你在同一个机器上管理多个 Python 项目的依赖和版本。虚拟环境可以隔离不同项目中的 Python 包,避免它们之间的冲突。在 Python 3.3 之后的版本中,Python 自带了 venv 模块,可以用来创建虚拟环境。 以下是在 Linux 或 Mac OS 上创建虚拟环境的步骤: 1. 打开终端,进入你的项目目录,创建一个新的虚拟环境。可以使用以下命令: ``` python3 -m venv env ``` 其中,env 是你要创建的虚拟环境的名称。这个命令会在当前目录下创建一个名为 env 的文件夹,并在其中创建虚拟环境。 2. 激活虚拟环境。可以使用以下命令: ``` source env/bin/activate ``` 3. 现在,你可以在虚拟环境中安装你的 Python 包了。例如,安装 Flask: ``` pip install Flask ``` 4. 在虚拟环境中退出时,可以使用以下命令: ``` deactivate ``` 现在,关于环境变量的配置,请按照以下步骤进行: 1. 打开终端,进入你的项目目录。 2. 编辑一个名为 .env 的文件,添加你要设置的环境变量。例如: ``` MY_VAR=hello ``` 3. 在你的 Python 代码中,可以使用以下方式获取环境变量的值: ```python import os my_var = os.environ.get('MY_VAR') print(my_var) # 输出 'hello' ``` 这样,你就可以在 Python 代码中使用环境变量了。 希望这些信息能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值