栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python基础

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python基础

一行代码实现1-100之和
#1、一行代码实现1-100之和
res=sum(range(1,101))
print(res)  #5050
如何在一个函数内部修改全局变量
#2、如何在一个函数内部修改全局变量
a=5
def func():
    global a
    a=10
    return a
func()
print(a)   #10
列出 5 个常用 Python 标准库?
#requests BeautifulSoup re json threading
#from threading import Thread
如何合并两个字典
#4、如何合并两个字典
dic1={'name':'psy'}
dic2={'age':18}
dic1.update(dic2)
print(dic1)  #{'age': 18, 'name': 'psy'}
谈一下Python的GIL
#5、谈一下Python的GIL
"""
GIL是Python的全局解释器锁,同一个进程如果有多个线程,一个线程在运行Python程序的时候会占用Python解释器(加一把锁即GIL),使
该进程内的其他线程无法运行,等该线程运行完后其他县城才能运行。如果线程运行过程中遇到好事操作,则解释其锁解开,使其他线程运行。
所以在多线程中,线程的运行仍时有先后顺序的,并不是同时进行的。

补充:多进程中因为每个进程都能被系统分配资源,相当于每个进程有一个Python解释器,所以多进程可以实现多个进程的同时运行,
            缺点就是进行系统资源开销大。
"""
Python实现列表去重 【并保证原来的顺序】
#6、Python实现列表去重  【并保证原来的顺序】
num_list = [1, 3, 1, 5, 3, 6, 1]
new_num=[]
jh=set()
for item in num_list:
    if item not in jh:
        new_num.append(item)
        jh.add(item)
print(new_num)  #[1, 3, 5, 6]

res=[num for num in set(num_list)]  #方法2
print(res)  #[1, 3, 5, 6]
fun(args,kwargs)中的args, kwargs 什么意思?
#7、fun(args,kwargs)中的args, kwargs 什么意思?
"""
*arg 表示传入的是非键值对的数据,即元祖类型
**kwargs 表示传入的是键值对数据,即字典类型

如果你有其他语言基础的话,你应该听说过重载的概念,对Python 为了避免这种繁琐的情况发生,引入了 args 和 kwargs;
args 用来接受非键值对的数据,即元组类型,而 kwargs 则用来接受键值对数据,即字典类型。
"""
Python2 和 Python3 的 range(100)的区别?
#8、Python2 和 Python3 的 range(100)的区别?

python2返回的是列表
python3返回的是迭代器,节约资源
生成一个16位的随机字符串
#9、生成一个16位的随机字符串
import random
import string  # string.printable  随机生成字符串,长度是100
res=''
for i in range(16):
    res=res+random.choice(string.printable)
print(res)  #G)_$U/#h@EhfL;6#

print(''.join((random.choice(string.printable)) for i in range(16)))  #I@}Z+Z(CS~5 AZ!+    【方法2】
一句话解释什么样的语言能够用装饰器?
#10、一句话解释什么样的语言能够用装饰器?
# 函数可以作为参数传递
python内建的数据类型
#11、python内建的数据类型
#整型 int    布尔型 bool    字符串  str    列表 list    元祖 tuple   字典 dict
简述面向对象中new和init区别?
#12、简述面向对象中new和init区别?
"""
(1)__new__至少要一个参数cls,代表当前类,此参数在实例化由python解释器自动识别
(2)__new__必须要有一个返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意!
    可以return 父类(通过super(当前类名,cls)).__new__出来的实例,或者直接是object的__new__出来的实例。
(3)__new__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,
    __init__不需要返回值
(4)如果__new__创建的是当前类的实例,会自动调用__init__函数,通过return语句里面调用的__new__函数的第一个参数是cls来保证是当前类实例,
    如果是其他类的类名,那么实际创建返回的就是其他类的实例,其实就不会调用当前类的__init__函数,也不会调用其他类的__init__函数
"""#【下面举例说明】
#__init__和__new__的区别
class Person(object):
    def __new__(cls,name,age):
        print('__new__ called')
        return super(Person,cls).__new__(cls)
    def __init__(self,name,age):
        print('__init__ called')
        self.name=name
        self.age=age
    def __str__(self):
        return 'Person:{}-{}'.format(self.name,self.age)
child=Person('psy',18)
print(child)
"""结果显示:
__new__ called
__init__ called
Person:psy-18
表明:
__new__的调用优于__init__方法;
__new__方法负责创建一个实例对象,__init__方法负责将该实例对象进行初始化;
__new__方法正式创建这个类实例的方法,返回额的对象正式__init__的self参数;
__init__用于实例化对象,__new__用于继承,是类别级的方法
"""
#__new__的应用场景
#__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径
class PositiveInt(int):
    def __new__(cls,value):
        return super(PositiveInt,cls).__new__(cls,abs(value))
print(PositiveInt(-55))  #55
class RoundFloat(float):
    def __new__(cls,value):
        return super(RoundFloat,cls).__new__(cls,round(value,2))
print(RoundFloat(3.1415926))  #3.14
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号