python knowledges

1.list的remove问题

用remove删除for循环下的list中元素'1',只会删除从当前位置(程序中的i)开始第一个元素'1'。

测试代码:

class test():
    def __init__(self,a):
        self.a = a
if __name__=="__main__":
    list=[]
    l = ['1','1','2','2','1','1','2','2','1','1','2','2']
    list.append(test(1))
    list.append(test(1))
    list.append(test(2))
    list.append(test(1))
    list.append(test(2))
    list.append(test(1))
    list.append(test(1))
    list.append(test(1))
    list.append(test(1))
    list.append(test(3))
    list.append(test(1))
    list.append(test(1))
    list.append(test(3))
    list.append(test(3))

    for x in range(0,len(list)):
        print(list[x],list[x].a)
    for i in list:
        if i.a==1:
            print(i.a)
            list.remove(i)

    for x in range(0,len(list)):
        print(list[x],list[x].a)

参考网站:

http://www.runoob.com/python/att-list-remove.html

https://blog.csdn.net/guan666/article/details/71511948

2.导入包的路径

import sys
sys.path.append('所需包路径')

sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。

参考网站:http://www.runoob.com/python3/python3-module.html

3.python函数传不定长参数

1)形参写为*arg--表示传入的参数会以元组tuple形式传入;

2)形参写为**arg--表示传入的参数会以字典dict形式传入。

示例代码:

def testTuple(*arg):
    print(arg)

def testDict(**arg):
    print(arg)
    
if __name__=="__main__":
    testTuple(1,2,"3","4")
    testDict(a1=1,a2=2,a3="3",a4="4")

输出结果:

(1, 2, '3', '4')
{'a1': 1, 'a3': '3', 'a2': 2, 'a4': '4'}

 4.调试技巧

1)在想设置的断点处插入一句:import pdb;pdb.set_trace()

2)查看某一参数内容:p param(打印参数);查看参数属性、方法列表:dir(param)

5.类的静态方法

参考网站:https://blog.csdn.net/polyhedronx/article/details/81911548

在类的方法前加入@staticmethod,如:

class BaseHello(object):
    model = 1
    ……    
    def set_model_general(self,model):
        self.model = model

    @staticmethod
    def set_model_static(model):
        BaseHello.model = model

一般的类方法需要先实例化,再调用。

A = BaseHello()
A.set_model_general(10)

但是类的静态方法可以不需要实例化,直接类名.方法名()来调用

BaseHello.set_model_general(10)

6.list中多级for循环嵌套

def get_im_name_list(im_path,im_ext=".png"):
    im_list=[]
    for _,dirs,files in os.walk(im_path):
        for f in files:
            if os.path.splitext(f)[-1]==im_ext:
                im_list.append(os.path.join(_,f))
    return im_list

可改写如下:(依次排列在list中即可)

def get_im_name_list(im_path,im_ext=".png"):
    im_list = [os.path.join(_,f) for _,dirs,files in os.walk(im_path) for f in files if os.path.splitext(f)[-1]==im_ext]
    return im_list

7.ImportError

Linux系统下,报类似的错误,如:ImportError: No module named builtins,无非存在两个方面的问题:

①未安装相应的包

直接pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $package name$或者$related package$

②安装了相应的包,执行python未包含响应包的路径

如python3包路径在/usr/local/lib/python3.5/dist-packages,并且这个路径下已经安装了相应的包,则使用如下命令添加PYTHONPATH即可:export PYTHONPATH=/usr/local/lib/python3.5/dist-packages:$PYTHONPATH

或者把这条命令添加到/home/ubuntu/.bashrc(当前用户执行环境变量)中,然后执行source /home/ubuntu/.bashrc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值