python学习总结---学习交流群里的问题总结

连续添加数据到明细:

def onchange_product_id(self, cr, uid,ids, product_id,line_id, context=None):
        result={}
        if product_id:
            sql="select product_id, sum (qty) qty,lot_id ,max(in_date) in_date ,location_id from stock_quant where product_id=%d GROUP by product_id,lot_id ,location_id;"%(product_id)
            cr.execute(sql)
            dict=cr.dictfetchall()       #      这一句将原开数据,一直叠加进去
            line_ids=line_id
            num=len(dict)
            i=0
            for i in range(num):
                line_ids.append(({
                                     ‘sequence‘:i+1,
                                     ‘product_id‘:dict[i][‘product_id‘],
                                     ‘lot_id‘:dict[i][‘lot_id‘],
                                     ‘wl_qty‘:dict[i][‘qty‘],
                                     ‘realy_qty‘:dict[i][‘qty‘],
                                     ‘date_in‘:dict[i][‘in_date‘],
                                     ‘location_id‘:dict[i][‘location_id‘],
                                      }))
                i+=1

            result[‘line_id‘]=line_ids

        return {‘value‘:result}

做odoo一年多了,今天碰到学习交流群里的一些问题:这里将它记录下来

当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。

def fun_var_args(farg, *args):     print "arg:", farg     for value in args:         print "another arg:", value  fun_var_args(1, "two", 3) # *args可以当作可容纳多个变量组成的list result:[python] arg: 1 another arg: two another arg: 3 **kwargs:[python] def fun_var_kwargs(farg, **kwargs):     print "arg:", farg     for key in kwargs:         print "another keyword arg: %s: %s" % (key, kwargs[key])   fun_var_kwargs(farg=1, myarg2="two", myarg3=3) # myarg2和myarg3被视为key, 感觉**kwargs可以当作容纳多个key和value的dictionary result:[python] arg: 1 another keyword arg: myarg2: two another keyword arg: myarg3: 3 也可以用下面的形式:[python] def fun_var_args_call(arg1, arg2, arg3):     print "arg1:", arg1     print "arg2:", arg2     print "arg3:", arg3  args = ["two", 3] #list fun_var_args_call(1, *args) result:[python] arg1: 1 arg2: two arg3: 3 

#这里的**kwargs可以是字典类型参数

#简单的例子

[python] 
def fun_var_args_call(arg1, arg2, arg3): 
    print "arg1:", arg1 
    print "arg2:", arg2 
    print "arg3:", arg3 
 #命名变量
kwargs = {"arg3": 3, "arg2": "two"} # dictionary

#调用函数
fun_var_args_call(1, **kwargs) 
result:
[python] view plaincopyprint?
arg1: 1 
arg2:"two" 
arg3:3


python中的单例模式:

单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。

实现单例模式的几种形式:

1.使用模块

其实,Python 的模块就是天然的单例模式

模块在第一次导入时,会生成 .pyc 文件,当第二次导入时,就会直接加载 .pyc 文件,

而不会再次执行模块代码。因此,我们只需把相关的函数和数据定义在一个模块中,就可以获得一个单例对象了

mysingleton.py

class Singleton(object):
    def foo(self):
        pass
singleton = Singleton()

将上面的代码保存在文件 mysingleton.py 中,要使用时,直接在其他文件中导入此文件中的对象,这个对象即是单例模式的对象

调用时用:   from a import singleton

2.使用装饰器



def Singleton(cls):
    _instance = {}

    def _singleton(*args, **kargs):
        if cls not in _instance:
            _instance[cls] = cls(*args, **kargs)
        return _instance[cls]

    return _singleton

#运行时,会现加载他
@Singleton
class A(object):
    a = 1

    def __init__(self, x=0):
        self.x = x

a1 = A(2)
a2 = A(3)



3.使用类



class Singleton(object):

    def __init__(self):
        pass

    @classmethod   #类方法
    def instance(cls, *args, **kwargs):
        if not hasattr(Singleton, "_instance"):
            Singleton._instance = Singleton(*args, **kwargs)
        return Singleton._instance


原文地址:https://www.cnblogs.com/1314520xh/p/9026987.html

时间: 2024-10-10 15:02:59

python学习总结---学习交流群里的问题总结的相关文章

【UNREAL ENGINE 游戏开发】开篇之为什么现在就要抱紧UE的大腿!(另附学习资料/交流群)

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/unreal-engine-game/2129.html 自从开始自学Unreal Engine后,身边的朋友.群里的童鞋们都在问:Himi,为什么要转UE了?UE到底好在哪里?与U3D比优势到底在哪里?等各种问题.而且解释过的问题,等会还要再解释给没看到的童鞋们 - 所以Himi特意来写篇博文,统一解释UE对于我为什么会有这么大的诱惑力! 这

C#学习视频分享与开发技术QQ交流群

欢迎进群大家以后一起交流 C#..Net技术交流群: 423296844  2000人  点击快速度加群 建议大家进群,还有更多群共享里源码项目等您下载进群看公告 黑马传智等IOS java 学习视频 http://pan.baidu.com/share/init?shareid=3778027547&uk=236429665传智1链接: http://pan.baidu.com/s/147Wt0 密码:jsi6传智2 链接:http://pan.baidu.com/s/1iTmG4 密码:61

IDEA学习系列之剖析IDEA里的Code Style(适合各种语言)(不断更新)(图文详解)

不多说,直接上干货! File  -> Settings ->  Editor  ->   Code Style   (1)HOCON 分为: Tabs  and Indents . Spaces . Wrapping and Braces 和  Blank Lines (2)Scala 分为:Tabs and Indents.Spaces.Wrapping and Braces.Blank Lines.ScalaDoc.Imports.Multi-line strings.Type A

咱们的课程里,有微信的这种菜单示例吗?---酷课堂iOS交流群问答整理(201810期)

酷课堂iOS交流群 我们是一个什么样的组织:酷课堂iOS交流群,聚集了一群热爱技术.有趣.有料,平均Q龄在10年以上的"老司机",他们遍布在全国/球各地,有知名企业iOS工程师.高校大学生.自由职业者--如果你也是这样的人,欢迎加入我们,一起畅聊iOS技术及周边. "很干""很佛系"每晚11点后熄灯(禁言),只聊技术,几乎不闲聊. IT从业者自学成功的不少,但从入门到放弃的人更多.一个人走的快,一群人走的远,希望你会是坚持到最后的那一波,希望我们

干货:入门Python需要重点学习的几个模块

我们学习Python的过程中总是遇到很多难题,最常见的比如IP限制,我们学会通过使用代理IP来解决,其他情况下也会存在很多异常或者麻烦,需要大家耐心学习,今天给大家分享的就是入门python需要重点学习的内容. 1.因为主要用python来做数据分析,所以直接下的anaconda.这个工具的主要优势是首先安装方便,一般情况下不要去管什么环境变量.然后是使用时,代码可以在一个一个格子里分开写,这对新手感觉很重要.因为新手容易出错,一次写一大段代码,出错了一脸蒙比不知道哪错了,分成一小段一小段运行比

python资源交流群

百度网盘python资源交流群,群号:980173694.我只创建此群,并不管理,只为一些寻找资料的同志提供一个好的途径,为没有财力能力又想有好课程.教材.工具学习的同志提供一条道路.若能支持正版的希望支持正版 群中部分内容: 群中部分图书资源:https://lanzous.com/b00zdngad pycharm2020.1版本及以下破解补丁链接: https://pan.baidu.com/s/1RQ5Jhi7CELe4kCnZy8u17Q 提取码: f6sy 群中课程不便在此展示. 也

《灰帽Python-黑客和逆向工程师的Python编程》学习记录

ctypes是Python语言的一个外部库,提供和C语言兼容的数据类型,可以很方便的调用C DLL中的函数. 操作环境:CentOS6.5 Python版本:2.66 ctypes是强大的,强大到本书以后介绍的几乎所有库都要基于此.使用它我们就能够调用动态链接库中函数,同时创建各种复杂的C数据类型和底层操作函数.毫无疑问,ctypes就是本书的基础. 第一章 搭建开发环境 1.3.2 使用动态链接库 from ctypes import * libc = CDLL("libc.so.6"

python源码学习(一)——python的总体架构

python源码学习(一)——python的总体架构 学习环境: 系统:ubuntu 12.04 STLpython版本:2.7既然要学习python的源码,首先我们要在电脑上安装python并且下载python的源码,ubuntu 12.04 STL自带的python版本为2.7.3,这就可以了,接下来下载源码,下载python2.7.7的源代码,下载结束后解压文件,我们会看到如下文件结构:,接下来介绍一下,demo文件夹里放的是一些例子:Doc文件夹里放的是文档,Grammer是语法分析器,

python with关键字学习

1.with语句时用于对try except finally 的优化,让代码更加美观, 例如常用的开发文件的操作,用try except finally 实现: f=open('file_name','r') try: r=f.read() except: pass finally: f.close() 打开文件的时候,为了能正常释放文件的句柄,都要加个try,然后再finally里把f close掉,但是这样的代码不美观,finally就像个尾巴,一直托在后面,尤其是当try里面的语句时几十行