与C++不同,在python中我们不需要使用?符号,而是使用如下语法:[on true] if [expression] else [on false] ---- 如果[expression]为真,则[on true]部分被执行,反之[on false]被执行,举例:x=2,y=3, a = ‘sss’ if x>y else ‘www’
线程是cpu调度的基本单位,同一个进程内的线程共享进程的资源,简而言之,一个程序至少有一个进程,一个进程至少有一个线程。python是一种多线程语言,它有一个多线程包。同时GIL确保一次执行单个线程,一个线程保存GIL并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉。但实际上只是线程轮流在cpu上执行,当然,所有传递都会增加执行的开销。
继承就是一个类继承自另一个类,也就是说是一个孩子类/派生类/子类,继承了父类/基类/超类,同时获取了所有类成员的属性和方法。
作用:继承使得我们可以重用代码,子类继承父类的同时还可以在子类中添加新的属性和功能,提供开发效率,避免代码冗余。
python支持一下类型的继承:
什么是Web框架?
pyhon用一个私有堆内存空间来防止所有对象和数据结构,我们无法访问它。是由解析器来管理它,不过使用一些核心API,我们可以访问一些python内存管理工具控制内存分配。
help()函数返回帮助文档和参数说明:如import copy help(copy)
dir()函数返回对象中的所有成员(任何类型);如dir(copy.copy)
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
否!具有对象循环引用或者全局命名空间引用的变量,在python退出时往往不会被释放,另外不会释放C库保留的部分内容。
在运行时动态修改类和模块,猴子补丁的含义是指在动态语言中,不去改变源码而对功能进行追加和变更。
>>> class A:
def func(self):
print("Hi")
>>> def monkey(self):
print "Hi, monkey"
>>> m.A.func = monkey
>>> a = m.A()
>>> a.func()
运行结果为:Hi,Monkey
字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值key=》value对用冒号:分割,每个键值对直接用逗号,分割,整个字典包括在花括号{}中。键一般是唯一的,如果重复最后一个键值为准,值不需要唯一。值可以取任意数据类型,但键必须是不可变的,可哈希的。
import os
os.chdir('C:\\Users\\xxx\\Desktop')
with open('Today.txt') as today:
count = 0
for i in today.read():
if i.isupper():
count+=1
print (count)
先创建一个列表, lis = [1,2,3,4] , 正索引去除列表第一个元素,lis[0], – 负索引取出列表最后一个元素lis[-1],取出4,负索引取倒数第二个,lis[2],负索引切片:lis[-3: -1] ,注意切片是左闭右开的,取不到最右边元素
可以用random包中的shuffle()函数来实现
lis = [1,2,3,4,5]
import random
random.shuffle(lis)
print(lis)
join()函数可以降序列中的元素以指定的字符连接生成一个新的字符串
语法为:str.join(sequesnce)
str = "-"
seq = ('a','b','c')
print(str.join(seq)
split()函数可以用指定的字符分割字符串,并返回分割后的字符串列表
而os.path.split()是按照路径将文件名和路径分隔开
string = 'www.fasf.com.cn'
print(string.split('.'))
输出:['www','fasf','com','cn']
分割两次
print(string.split('.', 2))
输出: ['www','fasf','com.cn']
分割两次,并取序列为1的项
print(string.split('.', 2)[1])
输出:fasf
分割两次,并把分割后的三个部分保存到三个文件
u1,u2,u3 = string.split('.', 2)
print(u1) ----- www
print(u2) ----- fasf
print(u3) ----- com.cn
分离文件名和路径
import os
print(os.path.split('/dodo/soft/python/'))
('/dodo/soft/python', '')
print(os.path.split('/dodo/soft/python'))
('/dodo/soft', 'python')
实例
str="hello boy<[www.baidu.com]>byebye"
print(str.split("[")[1].split("]")[0])
www.baidu.com
区分的,举例如下:
>>> myname = 'alice'
>>> Myname
Traceback (most recent call last):
File "", line 1, in
NameError: name 'Myname' is not defined
>>>
str1 = ' alanjkl '
print(str1.lstrip())
print(str1.rstrip())
print(str1.strip())
strp()方法语法: str.strip([chars]);
chars---移除字符串头尾指定的字符序列
返回移除字符串头尾指定的字符生成的新字符串
举例:
str1 = '0000023232faf00000'
print(str.strip('0'))
输出:23232faf
str2 = '123afjeifjeier321'
print(str2.strip('12'))
输出:3ajfoawej3