大数据(7d)比较Python和Scala的方法和函数
Posted 小基基o_O
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据(7d)比较Python和Scala的方法和函数相关的知识,希望对你有一定的参考价值。
Python
原名 | method | function |
---|---|---|
译名 | 方法 | 函数 |
调用方式 | 对象名.方法名() | 函数名() |
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、类的m1
是function,对象的m1
是method
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的方法和函数的主要内容,如果未能解决你的问题,请参考以下文章