python-07

内置函数(内置函数if else对齐,用于外置函数判断)
def name_print(isChinese,name,FamilyName):
def inner(a,b):
print("{0},{1}".format(a,b))
if isChinese:
inner(FamilyName,name)
else:
inner(name, FamilyName)
name_print(True,“三”,“高”)
name_print(False,"yy ",“maya”)

高,三
yy ,maya

nonlocal关键字:

nonlocal用来声明外部的局部变量,global用来声明全局变量
def f1():
a=3

print(“f1:out”,a)

def f2():
    nonlocal a
    print("f2:inner",a)
    a=300
f2()
print("f1:outer", a)

f1()

f2:inner 3
f1:outer 300

LEGB规则:
Local局部变量——Enclosed嵌套函数——Global全局变量——Build in内置变量

类的结构:方法(函数)+属性(变量)
类名一般首字母大写
class Student:
def init(self,name,score): (自建函数两个下划线,self必须位于第一个参数)
self.name=name
self.score=score
def say_score(self):
print("{0}的分数是:{1}".format(self.name,self.score))
s1=Student(“a”,89) (通过类名来调用构造函数)
s1.say_score()

a的分数是:89

构造函数;
inti()初始化对象,给实例属性赋值。
new()创建对象

对象:ID,TYPE,value(属性+方法)

类属性:类的变量,可以被所有实例对象共享。
类方法:@classmethod
def 类方法名(cls,[形参]):
函数体

静态方法:定义与“类对象无关的方法”
@staticmethod
def 静态方法名([形参]):
函数体

__del__析构函数,垃圾回收方法,引用计数为0
class Person:
def del(self):
print(“销毁对象:{0}”.format(self))
f1=Person()
f2=Person()
del(f2)
print(“结束”)

销毁对象:<main.Person object at 0x021B65D0>
结束
销毁对象:<main.Person object at 0x0030C450>

__call__方法调用对象
class SalaryAccount:
def call(self,salary):
print(“发工资了!”)
yearSalary=salary*12
daySalary=salary//27.5
hourSalary=daySalary//8
return dict(yearSalary=yearSalary,monthSalary=salary,daySalary=daySalary,hourSalary=hourSalary)
s=SalaryAccount()
print(s(30000))

发工资了!
{‘yearSalary’: 360000, ‘monthSalary’: 30000, ‘daySalary’: 1090.0, ‘hourSalary’: 136.0}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python-CAN可以通过PCAN接口发送长度为64的信号报文。实际上,CAN总线上的数据帧最大长度为8个字节,因此发送长度为64的信号报文需要将信号拆分成多个CAN数据帧进行传输。 下面是一个示例代码,用于将长度为64的信号报文拆分成多个CAN数据帧进行发送: ```python import can import struct # 创建PCAN接口 bus = can.interface.Bus(bustype='pcan', channel='PCAN_USBBUS1', bitrate=500000) # 定义信号数据 signal_data = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F\x10' \ b'\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x20' \ b'\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F\x30' \ b'\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F\x40' # 将信号数据拆分为多个CAN数据帧 signal_id = 0x12345678 signal_name = 'signal' data_size = 8 frame_count = (len(signal_data) + data_size - 1) // data_size # 计算需要拆分成多少个数据帧 for i in range(frame_count): # 计算当前数据帧的数据 data_start = i * data_size data_end = min((i + 1) * data_size, len(signal_data)) current_data = signal_data[data_start:data_end] # 创建CAN数据帧 message_data = struct.pack('<B', i) + current_data # 在数据前添加序号 message = can.Message(arbitration_id=signal_id, data=message_data, is_extended_id=True) # 发送CAN数据帧 bus.send(message) ``` 在上面的示例代码中,我们将一个长度为64的信号报文拆分成8个长度为8的CAN数据帧进行传输。每个CAN数据帧的数据部分包含一个序号和当前数据块的内容。通过这种方式,我们可以将长度为64的信号报文拆分成多个CAN数据帧进行传输。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值