Python基础——语法细节
文章目录
前言
本篇主要谈及Python的基础语法,和一些细节讨论。本篇的缺点是:没有介绍太多基础细节,希望看官多多包含。优点是:对涉及网络调试助手开发用到的相关基础语句和语法做了一定总结,希望可以帮助到有需要的小伙伴。
一、基础语句
1. 导包、导模块
import... # 导入模块
from ... import ...
from 模块 import 函数 #导入模块中多个函数加逗号
from ... import * # 导入模块中所有函数
2.运算符
- 在 python 3 中,/ 有所改变,不管是整数除法还是浮点数除法,执行的都是浮点数除法,即可以保留计算结果的小数部分。
- 在 python 中还提供了 // 这个整除运算符,它做的是整除,而且对浮点数执行的也是整除。
3.数组中冒号的作用
a[i:j] 数组单冒号的作用:
这里的i指起始位置,默认为0;j是终止位置,默认为len(a),在取出数组中的值时就会从数组下标i(包括)一直取到下标j之前(不包括j),在一个冒号的情况下若出现负数则代表倒数某个位置 a[i:-j] 这里就是从下标i取到倒数第j个下标之前(不包括倒数第j个下标位置的元素)a[i:j:h] 数组双冒号的作用:
这里的i,j还是起始位置和终止位置,h是步长,默认为1,若i/j位置上出现负数依然倒数第i/j个下标的位置,h若为负数则是逆序输出,这时要求起始位置下标大于终止位置,在两个冒号的情况下若h为正数,则i默认为0,j默认为len(a);若h为负数,则i默认为-1(即最后一个位置),j默认为-len(a)-1(下标0的前一个位置,这样就能输出到下标0了)数组冒号参考链接:点击这里
4.函数定义与变量
- Python中定义函数时,若想在函数内部对函数外的变量进行操作,就需要在函数内部声明其为global。
- global需要在函数内部声明,若在函数外声明,则函数依然无法操作。
- 在python中,变量不需要先声明,直接使用即可。
- 首先:python使用的变量,在默认情况下一定是用局部变量。
- 其次:python如果想使用作用域之外的全局变量,则需要加global前缀。
二、类和对象的使用
1.基本语法
class 类名(继承的谁):
def __init__(self): #编辑子类方案· #创建的对象在类中用self代替
super().__init__() #继承父类中所有的类
print #自己编辑的方案
#获取所有子类:
类名.__subclasses__()
#获取所有父类:
mros = QObject.mro()
for mro in mros:
#重写方法
def notify(self, recevier, event):
#返回父类方法 就是又一次引用了父类方法
return super().notify(recevier, event)
2.向类传参
- 类下需要用到的对象传值,可以在类下定义,也可以在类生明时加上参数表,通过类外传递来赋值。
#类下传参
class ClientThread(Thread):
def __init__(self, window):
Thread.__init__(self)
self.window = window
def run(self):
tcp = '192.168.03.250'
port = 65003
BUFFER_SIZE = 1024
#类外传参
class ServerThread(Thread):
def __init__(self, Window, ip, port):
TCP_IP = '192.168.03.250'
TCP_PORT = 65003
serverThread = ServerThread(window, TCP_IP, TCP_PORT)
3.不同类之间相互调用
- 不同类之间的调用需要实例化。
- python的类是由一些特定的语句组成的,具有某些功能的代码片段,实例是调用类生成的,每次调用一个类,就得到这个类的新的实例。通俗点理解就是“类提供默认行为,是实例的工厂”。
- 类定义完成后,就会产生一个类对象,绑定到了标识符ClassName上。
- 类创建后self.只能再类内调用类的方法。
- 只有创建对象实例化后才可以在类外调用方法。
a = MyClass()
这就是实例化使用上面的语法,在类对象名称后面加上一个括号,就调用类的实例化方法,完成实例化。
实例化就真正创建一个该类的对象(实例)
Python类实例化后,会自动调用__init__方法。这个方法第一个形式参数必须留给self,其它参数随意
初始化,函数可以有多个参数,请注意第一个位置必须是self,例如 init(self, name, age)
注意:
init()方法不能有返回值,也就是只能是return None
4.对象释放
- 父对象被释放,子对象也被释放。对象只能有一个父对象,且是最后设置的父对象。
- 当对象被其他对象引用时,del删除语句不起作用。
- deleteLater()并没有将对象立即销毁,而是向主消息循环发送了一个event,下一次主消息循环收到这个event之后才会销毁对象 del 只是切断了对象之间的连接并不能解除引用,只要还在引用就仍然可以作用。
5.常用操作类和对象的方法
if recevier.inherits("QPushButton"): #筛选消息类型
recevier.inherits("QPushButton") and event.type() == QEvent.MouseButtonPress: #筛选信号
setObjectName #给对象设置唯一的名字
objectName() #获取对象的名字
.property("属性名称") #检索名称获取对象的属性值
dynamicPropertyNames() #获取通过setProperty设置对象的属性
.notify () 条件变量对象
条件变量允许一个或多个线程等待,直到被另一个线程通知为止。 此方法用于唤醒任何正在等待条件变量的线程。
本文含有隐藏内容,请 开通VIP 后查看