#1一行代码实现1--100之和
# print(sum(range(1,101)))
#2如何在一个函数内部修改全局变量
# 用global声明,将其转变为全局变量
#3列出5个python标准库
# datetime re os requests functools
#4字典如何删除键和合并字典
# #删除键
# dict = {'name':'liuwei','age':18}
# print(dict)
# del dict['name']
# print(dict)
# #合并字典
# dict1 = {'sex':'男'}
# dict.update(dict1)
# print(dict)
#5谈下python的GIL
# 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。
# GIL:又称全局解释器锁。作用就是限制多线程同时执行,保证同一时间内只有一个线程在执行。线程非独立的,所以同一进程里线程是数据共享;
# 当各个线程访问数据资源时会出现“竞争”状态,即数据可能会同时被多个线程占用,造成数据混乱,这就是线程的不安全。所以引进了互斥锁,确保某段关键代码、共享数据只能由一个线程从头到尾完整地执行。
# GIL并不是Python的特性,Python完全可以不依赖于GIL。
#6python实现列表去重的方法
#通过集合转列表
# lists = [1,1,2,3,4,5,2,3,1,34]
# print(list(set(lists)))
#7fun(*arg,**kwargs)中的*arg,**kwargs是什么意思?
# 两者主要用于函数定义,传参,若事先不知道传递多少个参数,可以使用这两个关键字
# *arg用来发射一个非键值对的可变数量参数列表给一个函数
# **kwargs允许将不定长度的键值对作为参数传递给一个函数
#8Python2和python3的range(100)的区别
#python2返回列表,python3返回迭代器,节省内存
#9一句话解释什么样的语言能够用装饰器
# 函数可以作为参数传递的语言可以用装饰器
#10python内建数据类型有哪些?
# 整型(int),浮点型 (float),字符串(str),列表(list),集合(set),元组(tuple),字典(dict) ,布尔型(bool)
#11简述面向对象中__new__和__init__区别
# __init__是初始化方法,创建对象后默认调用,可接收参数
# __init__有一个参数self,是__new__返回的实例,在此基础上可以完成一些其他初始化动作,且不需要返回值
# __new__至少要有一个参数cls代表当前类,此参数在实例化时由python解释器自动识别
# __new__必须要有返回值,返回实例化出来的实例
# 如果__new__创建的是当前类的实例,会自动调用__init__函数。
#12简述with方法打开处理文件帮我们做了什么?
# 打开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的f.open写法,我们需要try,except.finally
# 做异常判断,并且文件最终不管遇到什么情况,都要执行finally f.close()关闭文件,with方法帮我们实现了这个方法。
#13列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10 的数,最终输出[16,25]
# lists = [1,2,3,4,5]
# def square(x):
# return x**2
# res = map(square,lists)
# res1 = [x for x in res if x >10]
# print(res1)
#14python中生成随机整数,随机小数,0--1之间小数的方法
# import random
# import numpy as np
# #随机整数
# print(random.randint(1,100)) # 生成1到100之间的随机整数
# #随机小数
# print(np.random.randn(3)) #生成3个随机小数
# #0--1之间小数
# print(random.random())
#15避免转义给字符串加哪个字母表示原始字符串
# r,表示原始字符串,不转义特殊字符
#16<div class="num">中国</div>,用正则表达式匹配出标签中的内容(“中国”),其中class的类名是不确定的
# import re
# str1 = "<div class='num'>中国</div>"
# res = re.findall(r"<div class='.*'>(.*?)</div>", str1)
# print(res)
#17python中断言方法举例
# a = 3
# assert(a>1)
# print('断言成功,程序继续向下执行')
# b = 4
# assert(b>7)
# print('断言失败,程序报错')
#18数据表student有id,name,score,city字段,其中name中的名字可有重复,需要消除重复行,请写sql语句
# select distinct name from student
#19 10个linux常用命令
# ls命令:可列出指定目录下的内容及其相关属性信息,
# cat命令:主要是用于查看内容较少的纯文本文件的。
# cp命令: 主要用于复制文件或目录,可以合并文件复制,即多个文件复制到一个文件或目录下。
# mkdir命令:它主要是用来创建目录的,可以创建一个或多个目录。
# echo命令:主要用于字符串的输出。
# mv命令:是移动文件或对文件进行改名。
# rm命令: 是常用的用于删除的命令,可以用来删除整个目录,也可以只删除某个目录下的某一个文件或多个文件,
# df命令:可以查看我们的磁盘空间已经使用了多少,磁盘分区使用情况等。
# find命令:不加参数的话可用于查找目前所在路径的文件和目录,加参数的话,不同的参数会有不同的功能,并且支持正则。语法格式为:find [参数] [路径] [查找和搜索范围]。
# rpm命令:是管理软件包常用的命令。
#20python2和python3区别?列举5个
# 1、输出print的不同;2、整数除法,返回值的不同;3、列表理解循环变量方面;4、Unicode字符串方面;5、错误处理方面;
#21列出python中可变数据类型和不可变数据类型,并简述原理
# 可变类型(mutable):变量进行append、+=等这种操作后 == 改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
# list dict set
# 不可变类型(immutable):改变了变量的值 == 新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址)
# int float bool string tuple
#22s = "ajldjlajfdljfddd"去重并从小到大排序输出“adfjl
# s = "ajldjlajfdljfddd"
# s1 = sorted(list(set(s)))
# print(''.join(s1))
#23用lambda函数实现两个数相乘
# a = lambda x,y:x*y
# print(a(2,5))
#24字典根据键从小到大排序dict= {"name": "zs", "age": 18, "city": "深圳", "tel": "1362626627"}
# dict1 = {"name": "zs", "age": 18, "city": "深圳", "tel": "1362626627"}
# list = sorted(dict1.items(),key=lambda x:x[0])
# new_dict = dict(list)
# print(new_dict)
#25利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj; ldsjafl; hdsllfdhg; lahfbl; hl; ahlf; h"
# from collections import Counter
# str1 = "kjalfj; ldsjafl; hdsllfdhg; lahfbl; hl; ahlf; h"
# res = Counter(str1)
# print(res)
#26字符串a = "not 404 found 张三 99 深圳",每个词中间是空格,用正则过滤掉英文和数字,最终输出“张三 深圳”
# import re
# a = "not 404 found 张三 99 深圳"
# res = re.spl