大数据(7d)比较Python和Scala的方法和函数

Posted 小基基o_O

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据(7d)比较Python和Scala的方法和函数相关的知识,希望对你有一定的参考价值。

Python

原名methodfunction
译名方法函数
调用方式对象名.方法名()函数名()
f2 = lambda: None
def f1(): pass


class C:
    def __init__(self):
        pass

    def m1(self):
        pass

    @staticmethod
    def m2():
        pass

    @classmethod
    def m3(cls):
        pass


o = C()

print(f1)
# <function f1 at 0x0000022492BFEEE0>
print(f2)
# <function <lambda> at 0x0000022492BFEF70>

print(C.__init__)
# <function C.__init__ at 0x0000022492C1E0D0>
print(C.m1)
# <function C.m1 at 0x0000022492C1E160>
print(C.m2)
# <function C.m2 at 0x0000022492C1E1F0>
print(C.m3)
# <bound method C.m3 of <class '__main__.C'>>

print(o.__init__)
# <bound method C.__init__ of <__main__.C object at 0x0000022492BC6F40>>
print(o.m1)
# <bound method C.m1 of <__main__.C object at 0x0000022492BC6F40>>
print(o.m2)
# <function C.m2 at 0x0000022492C1E1F0>
print(o.m3)
# <bound method C.m3 of <class '__main__.C'>>

如图所示:
1、类的m1function,对象的m1method
2、静态方法是function(见m2
3、类方法是method(见m3

Scala

  • 函数是对象,方法不是对象
  • 定义函数用val,定义方法用def
  • 方法可以重载,函数没有重载(即 不能重名)
  • 方法可转成函数

Python和Scala语法比较

比较Python和Scala的def

def m(a: String, b: String="Hello"): String = {
  /**
   * Scala文档注释
   * 可用`scaladoc`
   */
  return b + a
}

println(f("Scala"))
def f(a: str, b: str = 'Hello') -> str:
    """
    Python文档注释
    可用`__doc__`
    """
    return b + a

print(f('Python'))

参数个数可变

def ff(*args):
    print(args)
ff('aa', 'bb')  # 打印结果:('aa', 'bb')
def ff(s: String*): Unit = {
  println(s)
}
ff("aa", "bb")  // 打印结果:ArraySeq(aa, bb)

参数带默认值

def ff(a: int, b: int = 5):
    print(a + b)
ff(2)  # 打印结果:7
def ff(a: Int, b: Int = 5): Unit = {
  println(a + b)
}
ff(2)  // 打印结果:7

过程

def ff() -> None:
    print("process")

Scala过程无返回值类型,可以省略等号

def ff() {
  print("process")
}

闭包

def f1(a, b):
    def f2(x, y):
        return a * x + b * y
    return f2

print(f1(6, 8)(6, 8))  # 打印结果:100

匿名函数

lambda (a, b): a + 'Python' + b
(a: String, b: String) => a + "Scala" + b

运算符

2.9 + 3
2.9.__add__(3)
2.9 + 3
2.9.+(3)

以上是关于大数据(7d)比较Python和Scala的方法和函数的主要内容,如果未能解决你的问题,请参考以下文章

大数据(7h)比较Python和Scala的数据容器

大数据(7j)比较Python和Scala的yield

大数据(7c)比较Python和Scala的流程控制

R,Python,Scala 和 Java,到底该使用哪一种大数据编程语言

关于这场Python 和Scala的较量,你怎么看?

Scala更适合用于大数据处理和机器学习