1、如何跨模块共享全局变量?
在单个程序中跨模块共享信息的规范方法是创建一个特殊模块(通常称为config或cfg)。
只需在应用程序的所有模块中导入配置模块;然后该模块可用作全局名称。
因为每个模块只有一个实例,所以对模块对象所做的任何更改都会在任何地方反映出来。
比如:
在config.py文件中定义一个变量:x = 0
在mod.py文件中导入config
import config
config.x = 1
在main.py文件中导入config和mod
import config
import mod
print(config.x)
2、简述python内存管理。
内存管理是有效分配,重新分配和协调内存的过程,以便所有不同的进程都能平稳运行并可以最佳地访问不同的系统资源。
内存管理还涉及清除不再访问的对象的内存。
以引用计数为主,分代回收,标记清除为辅的垃圾回收方式进行内存回收
并且还引入小整数缓冲池和常见简单字符串驻留区的内存缓冲池机制
3、简述pep8的5个规则, 简述python数据类型。
①使用4个空格来缩进代码,不要用tab制表符,也不要tab和空格混用,对于行连接的情况。
②如果可以,注释单独占一行。
③使用文档字符串
④运算符周围和逗号后面使用空格,但是括号里面不加空格:a = f(1,2) + g(3,4)
⑤折行以确保其不会超过79个字符。这有助于小显示器用户阅读,也可以让大显示器能并排显示几个代码、文件。
4、python数据类型:
数字类型(整型、浮点型、复数)、字符串类型、布尔类型、容器类型(列表、元组、字典、集合类型)
5、python中有哪些数据类型是可变数据类型,有哪些数据类型是不可变数据类型。
可变数据类型:在原内存地址上可以修改存储具体内容
列表:list、字典:dict、集合:set
不可变数据类型:在原内存地址上不能修改存储具体内容
数字(int和float)、字符串类型、元组:tuple
6、 有一个文本内容格式如下,每行个字段用空白隔开,假设你不知道它里面的具体内容。
a a1 a2 a3
b xx
c 123 yy
请将它们的每一行内容按照如下格式输出:
a a1 a2 a3 b xx c 123 yy with open("test.txt",'w',encoding="gbk") as fp: fp.write("a a1 a2 a3\nb xx\nc 123 yy") with open("test.txt",'r',encoding="gbk")as fp: for line in fp: line = line.split() #split()以空白进行分割 print(line) i = 0 for line2 in line: # print(line2) a = " "*i + line2 # b = a.replace(" ",' ') print(a) i += len(line2)
7、有如下python脚本, a.py , 它执行时,可以接受命令行参数。比如:python3 a.py -name sc -age 5 应该如何实现:
# -*- coding: utf-8 -*- import argparse parser = argparse.ArgumentParser('description=Show this usage') parser.add_argument("--name", type=str, help='display an name') parser.add_argument("--age", type=int, help='display an name') args = parser.parse_args() print(args.name,args.age)
在linux中执行:python3 argparse.py --name=sc --age=5
8、如何判断字符串中是否有重复字符串
str2 = input("请输入一个字符串: ") str3 = set(str2) #字符串转成集合:天生去重 # print(str3) dict1 = dict()#定义一个空字典 if len(str2) == len(str3): print(f"字符串中没有重复的") else: print("字符串中有重复的") for i in str2: dict1[i] = str2.count(i) print(dict1)