在机器学习/深度学习里python的注意语法

python一些需要注意的点

通过使用python对机器学习里一些算法的实现,发现自己对python的一些语言特性比较模糊,虽然不用像做python开发一样任何细节都要知道,但是我们经常接触到的,经常使用的语法,你真的清楚吗?


  • 区分 class 的类变量和实例变量:

    class A(object):
        epoch = 0
        def __init__(self,reg=0.0):
            self.reg = reg 
            self.__name = "smile" 
        def find(self):
            pass
        def __merge(self):
            pass
    

    如上面代码所示,在类的__init__方法里 ,self.regself.__name都是类的实例变量,只是后者是私有变量,只能类内访问。epoch是类变量,即所有实例都共享这一个变量,一个实例修改了此变量,则反映到所有实例当中。

  • 区分类的私有方法和公有方法:

上面代码里,__merge() 是私有方法,find()公有方法。

  • from … import 和 import区别:

    >>> import numpy 
    >>> numpy.array([1,2,3,4])
    array([1, 2, 3, 4])
    >>> from numpy import *
    >>> array([1,2,3,4])
    array([1, 2, 3, 4])

    看到区别了吧,用from ... import对于我们来说,操作更加方便。

  • 函数的参数:

    参数类型有4种:必选参数、默认参数、可变参数、关键字参数

    1.必选参数

      def f(x):
         pass

    2.默认参数

      def f(x,y=0):
         pass

    注意!如果有必选参数,必选参数必须在默认参数前面。当不按顺序提供部分默认参数时,需要把参数名写上。定义默认参数要牢记一点:默认参数必须指向不变对象!具体可参考廖雪峰python教程

    3.可变参数

    下面代码引自廖雪峰python 里面对参数的讲解。廖雪峰python教程

      def calc(*numbers):
          sum = 0
          for n in numbers:
              sum = sum + n * n
          return sum
    >>> calc(1,2)
    5
    >>> calc()
    0
    >>> nums = [1,2,3]
    >>> calc(*nums)
    14

    可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。这些参数在函数调用时自动组成一个tuple。

    4.关键字参数
    关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组为一个dict。

    def person(name, age, **kw):
        print 'name:', name, 'age:', age, 'other:', kw
    >>> person('Michael', 30)
    name: Michael age: 30 other: {}
    >>> person('Adam', 45, gender='M', job='Engineer')
    name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
    >>> kw = {'city': 'Beijing', 'job': 'Engineer'}
    >>> person('Jack', 24, **kw)
    name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

    注意!!当参数组合时,顺序必须是:必选参数、默认参数、可变参数和关键字参数 。必须确保四个参数的相对顺序正确,即 可以是 必选参数,关键字参数。

  • 作用域

    这篇文章讲的python作用域很好。
    python里没有块级作用域
    但是有局部作用域,即函数里
    python有作用域链,会由内向外找
    在函数未执行之前,作用域已经形成了,作用域链也生成了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值