过往问题
1、为啥字符串不能通过索引操作改变其中的内容呀???是数据结构的问题?还是其他原因?
像列表都可以,列表是可变类型,所以通过索引操作既可以获取列表中的元素,也可以更新列表中的元素。
2、不可变类型更适合多线程环境,因为它降低了并发访问变量的同步化开销。为什么??
3、不可变类型在创建时间和占用空间上面都优于对应的可变类型,为什么??
import sys
import timeit
a = list(range(100000))
b = tuple(range(100000))
print(sys.getsizeof(a), sys.getsizeof(b)) # 900120 800056
print(timeit.timeit(‘[1, 2, 3, 4, 5, 6, 7, 8, 9]’))
print(timeit.timeit(‘(1, 2, 3, 4, 5, 6, 7, 8, 9)’))
4、输入5人成绩
names = [‘a’,‘b’,‘c’]
courses = [‘english’,‘math’]
scores = [[0] * len(courses) for _ in range(len(names))]
for i,name in enumerate(names):
for j,course in enumerate(courses):
print(f’{name}的{course}成绩为:‘,end=’‘)
scores[i][j] = float(input(’'))
for index, course in enumerate(courses):
curr_course_scores = [score[index] for score in scores]
print(type(score))
avg_score = sum(curr_course_scores) / len(names)
print(f’{course}的平均成绩为:{avg_score:.1f}分’)
if name == ‘main’
Python是一种解释型脚本语言,在执行之前不同要将所有代码先编译成中间代码。Python程序运行时是从模块顶行开始,逐行进行翻译执行,所以,最顶层(没有被缩进)的代码都会被执行,所以Python中并不需要一个统一的main()作为程序的入口。在某种意义上讲,“if name== ’main:”也像是一个标志,象征着Java等语言中的程序主入口,告诉其他程序员,代码入口在此——这是“if name==’main:”这条代码的意义之一。
开发人员通常会在模块下方增加一些测试代码,为了避免这些测试代码在模块被导入后执行,可以利用__name__属性。
name__属性是Python的一个内置属性,记录了一个字符串。
若是在当前文件,name 是__main。
若是导入的文件,__name__是模块名。
test文件导入hello模块,在test文件中打印出hello模块的__name__属性值,显示的是hello模块的模块名