标签:Python, 编程,笔试
代码:
list1 = {'1':1,'2':2}
list2 = list1
list1['1'] = 5
sum = list1['1'] + list2['1']
print(sum)
输出:
10
解释:
b = a
: 赋值引用,a 和 b 都指向同一个对象。
list1 和 list2 指向的是同一块内存空间
list1['1']=5 ------> 改变了这一块内存空间中'1'的value值
执行这一步后内存空间存储的数据变为:{'1': 5, '2': 2}
因此 sum = list1['1']+list2['1']=5+5=10
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
代码:
print(r'\nwoow')
输出:
\nwoow
解释:
原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
代码:
a=[1, 2, 3, 4, 5]
sums = sum(map(lambda x: x + 3, a[1::3]))
print(sums)
解析:
lambda [arg1 [,arg2,.....argn]]:expression
map(function, iterable, ...)#会根据提供的函数对指定序列做映射
a[1::3] # a列表中下标为1的值是2,步长step为3,所以a[1::3]就是[2,5]
输出:
13
代码:
a = 'a'
print(a > 'b' or 'c')
输出:
'c'
逻辑运算符:
and
x and y
如果 x 为 False,x and y 返回 False(x=0时,返回0),否则它返回 y 的计算值。
or
x or y
如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。
not
not x
如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
return
没有返回值时,函数自动返回None
,Python没有Null
1.变量无需事先声明
2.变量无需指定类型
3.程序员不用关心内存管理
4.变量名会被“回收”
5.del
语句能够直接释放资源
6.变量只有被创建和赋值后才能被使用
b = a
: 赋值引用,a 和 b 都指向同一个对象。
b = a.copy()
: 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。浅复制是指只拷贝父对象,不会拷贝对象的内部的子对象,即两个 dict 父对象相互独立,但对它们内部子对象的引用却是共享的
b = copy.deepcopy(a)
: 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。
单前导下划线: _var
下划线前缀的含义是告知其他程序员:以单个下划线开头的变量或方法仅供内部使用。它是对程序员的一个提示 - 意味着Python社区一致认为它应该是什么意思,但程序的行为不受影响。
但是,前导下划线的确会影响从模块中导入名称的方式。现在,如果使用通配符从模块中导入所有名称,则Python不会导入带有前导下划线的名称(除非模块定义了覆盖此行为的__all__
列表)。
应该避免通配符导入,因为它们使名称空间中存在哪些名称不清楚。 为了清楚起见,坚持常规导入更好。
单个下划线是一个Python命名约定,表示这个名称是供内部使用的。 它通常不由Python解释器强制执行,仅仅作为一种对程序员的提示。
单末尾下划线:var_
单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突
双前导下划线:__var
双下划线前缀会导致Python解释器重写属性名称,以避免子类中的命名冲突。
这也叫做名称修饰(name mangling) - 解释器更改变量的名称,以便在类被扩展的时候不容易产生冲突
双前导和末尾下划线:__var__
如果一个名字同时以双下划线开始和结束,则不会应用名称修饰
Python保留了有双前导和双末尾下划线的名称,用于特殊用途。 这样的例子有,__init__
对象构造函数,或__call__
--- 它使得一个对象可以被调用。
这些dunder方法通常被称为神奇方法 - 但Python社区中的许多人(包括我自己)都不喜欢这种方法。
最好避免在自己的程序中使用以双下划线("dunders")开头和结尾的名称,以避免与将来Python语言的变化产生冲突。
单下划线:_
按照习惯,有时候单个独立下划线是用作一个名字,来表示某个变量是临时的或无关紧要的,有时_
是大多数Python REPL中的一个特殊变量,它表示由解释器评估的最近一个表达式的结果。
range()
函数
range(start, stop[, step])
start: 计数从 start 开始。默认是从 0 开始。
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
字符串格式化
%d
、%i
转换为带符号的十进制整数
%s
使用 str() 函数将表达式转换为字符串
例如:
print('今天是刷%s的第%d天' % ('python',1))
输出
今天是刷python的第1天
str.endswith(suffix[, start[, end]])
用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。
如果只有一个参数,例如:
str.endswith(suffix,2)
则表明从2开始到结束
isinstance(object,classinfo)
,用于判断object
是否是classinfo
的一个实例,或者object
是否是classinfo
类的子类的一个实例,如果是返回True.
issubclass(class,classinfo)
,用于判断class
是否是classinfo
类的子类,如果是返回True.