1、两数交换
m,n=4,5
print(m,n)
n,m=m,n
print(m,n)
结果:
4 5
5 4
2、python的赋值
Python 的赋值更改的是变量的指向关系 。 python中,一切数据皆为”对象“。
m,n=10,3
p = m
m += p
print(p)
结果:10
原因:对象不可被覆盖(销毁)
s=[1,2,3,4,5]
c = s
s[2] = 9
print(c)
结果:[1,2,9,4,5]
原因:因为列表是一个可变对象,可以修改可变对象的值。
注意:是修改,而不是覆盖,所以它可以原对象进行操作,而不是令 s 指向修改后的对象
参考:https://blog.csdn.net/zisefeizhu/article/details/82942260
3、global的用法
global x
def fun1():
x='1'
def fun2():
print(x)
fun1()
fun2()
结果:报错
Traceback (most recent call last):
File "script.py", line 39, in
fun2()
File "script.py", line 36, in fun2
print(x)
NameError: name 'x' is not defined
解析:fun1()里面的变量x为局部变量,只在fun1()内有作用。fun2()中,使用变量 x 之前并没有变量 x,即没有定义变量x,故而报错。
global的知识点 基本格式:****global 变量名1,变量名2,... 作用: 声明变量的作用域 。即提示python 解释器,表明被其修饰的变量是全局变量。 原因: (1)在 c/c++ 等中,变量一定是先声明,后使用 。所以可以知道现在使用的变量是全局还是局部变量 (2)在python中,变量不需要先声明,直接使用即可 。故而怎么知道用的是局部变量还是全局变量? 首先:python使用的变量,在默认情况下一定是用局部变量 其次:python如果想使用作用域之外的全局变量,则需要加global前缀 注意:不能 在用 global 声明变量的同时给变量赋值 def fun1(): global x='1' # 报错 def fun2(): print(x) fun1() fun2() 报错 !!!
x = 5
def fun1():
global x
x='1'
def fun2():
print(x)
fun1()
fun2()
结果:
1
def fun1():
global x
x='1'
def fun2():
print(x)
fun1()
fun2()
结果:
1
解析:使用global 声明变量 x ,直接到global的作用域内寻找变量,未找到变量 x ,即提升x 为全局变量,所以在函数外也能访问。 python是动态调用变量。
x = [1,2]
def fun1():
global x
x='1'
def fun2():
print(x)
fun1()
fun2()
结果:
1
解析:将全局变量x重新指向对象 '1'
x = [1,2]
def fun1():
x[1] = 3
def fun2():
print(x)
fun1()
fun2()
结果:
[1, 3]
解析:全局变量 x 为列表,是可变对象,fun1()里面的操作是修改可变对象的值。
x = [1,2]
def fun1():
x='1'
def fun2():
print(x)
fun1()
fun2()
结果:
[1,2]
解析:fun1()里面的变量 x 为局部变量。虽然全局变量 x 为列表,是可变对象,但是fun1()里面的操作并不是修改可变对象的值,而是试图覆盖可变对象,是不可能的,故而将 x 重新作为局部变量。
4、循环
s = 'qw$^e&sASd1*23('
for i in s:
if not i.isalnum():
s=s.replace(i,'')
print(s)
结果:
qwesASd123
s =[1,2,3,4,5]
for i in s:
s.remove(i)
print(s)
结果:[2,4]
解析:在删除列表元素的时候,解释器内有一个隐式的指针,指向下一个要删除的元素的位置(也就是索引?) 。 当准备要删除的时候,指向第一个元素1,然后把这个1删掉,同时指针指向第二个数组元素。但这时候元素1已经被删除了,元素2是第一个元素,第二个元素是3,这时候3被删除了。
class A(object):
pass
class B(A):
pass
b=B()
print(isinstance(b,A)==True)
print(isinstance(b,object)==True)
print(isinstance(B,object)==True)
print(issubclass(B,A)==True)
print(issubclass(B,B)==True)
print(issubclass(A,B)==True)
print(issubclass(b,B)==True)
结果:
True
True
True
True
True
False
Traceback (most recent call last):
File "script.py", line 9, in
print(issubclass(b,B)==True)
TypeError: issubclass() arg 1 must be a class
isinstance() 函数 作用:判断一个对象是否是一个已知的类型 ,类似 type() 语法:isinstance(object, classinfo) 参数: object:实例对象 classinfo:可以是直接或间接类名、基本类型或者由它们组成的元组 返回值:如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False isinstance() 与 type() 区别: (1)type() 不会认为子类是一种父类类型,不考虑继承关系 (2)isinstance() 会认为子类是一种父类类型 ,考虑继承关系 如果要判断两个类型是否相同推荐使用 isinstance()
参考https://www.runoob.com/python/python-func-isinstance.html
issubclass()函数 作用:判断参数 class 是否是类型参数 classinfo 的子类 语法:issubclass(class, classinfo) 参数 class:类 classinfo:类 返回值:如果 class 是 classinfo 的子类返回 True,否则返回False
6、sizeof()——对齐
struct A{
int a;
char b;
double *c;
};
32bit系统中sizeof(A)的大小是多少? 答案:4+(1+3)+4=12 解析:指针所占的字节数都是机器的位数。 32位的机器占32/8=4字节 64位的机器占64/8=8字节 参考:https://blog.csdn.net/sinat_34886122/article/details/106794547
“(?<!Spark|Mavic|Phantom)DJI” 能匹配? 答案:DJI 解析:能匹配除了DJI前面不是Spark或Mavic或Phantom的DJI字符串。
8、移位
a=2>>1+1
print(a)
结果:0
解析:+、-运算符的优先级高于<< >>位移运算符 1+1=2 2>>2=0(相当于2/2 = 1,1/2=0。右移n位,相当于除以n次2)
9、Linux命令
查找包含特定字符串的文件一般用 grep 命令
10、线性电源
11、稳压二极管工作在什么状态
答案:反向击穿
12、LabVIEW中VI什么部分是常驻内存
13、正弦波信号发生器的技术指标
14、LabVIEW进行VI间进行数据传输的接口
15、c++ lambda
#include <iostream>
using namespace std;
int main() {
int a=1;
auto I=[&](){return ++a;};
I();
cout<<a;
return 0;
}
结果:2
16、什么是进程守护
17、TCP和UDP的区别
18、面向对象与面向过程基本概念及优缺点
19、摄影时,对曝光效果没有影响的是
焦距。 光圈,快门,感光度被称为曝光三要素。
测试的要求是找到全部的软件缺陷?
质量是开发出来的,不是测试出来的?
|