Java给人的感觉就是格式要求非常规范严谨,到了Python,可能设计者想让它更容易实用,将其傻瓜化了,但我个人的感觉,这样做可能反而会使其比Java更加麻烦。
Java中不存在函数的概念,所谓的函数都写在类里成为方法。而Python里既有函数,又有方法。这样的话就容易搞混淆。
Python中类和Java中类的概念类似,两者定义方式有所不同,这里不再赘述,有兴趣者可以查看相关教程。通过类定义对象也有所不同。例如,Java中定义对象:
Employee staff=new Employee()
或者
Employee staff
staff=new Employee()
在Python中则是
staff=Employee()
看似简单了,但却会造成一些麻烦——它会跟函数相混淆。
我可以说Employee()是定义了一个新对象,然后把地址返回给了staff;我也可以理解为Employee()是函数,把值的地址赋给staff。
仅从这里似乎看不出它是类还是函数,这就比较麻烦了。
Python中TensorFlow、numpy是库/包,Session、Graph是类,get_default_graph()是函数,as_default()是方法。
经常看到tf.Graph()、graph.get_default_graph()等等,如不加以区分很容易混淆。
有的是库.类,如tf.Graph()、tf.Session();
有的是对象.方法,如graph.as_default()、sess.as_default()、sess.run();
有的是类.方法,如Graph.as_graph_def();
有的是库.函数,如tf.import_graph_def()、tf.get_default_graph()。
那么如
a=tf.add(2,5)
b=tf.multiply(a,3)
中add和multiply是函数还是类?
按照上面的模式,tf是库,那么add和multiply可以是类也可以是函数,似乎从形式上并不能看出它的类型。我可以理解为new了一个add、multiple对象,并把地址赋给a、b,我也可以理解为做了加法和乘法运算,并把值的地址赋给a、b。这里add和multiply是Op,请注意Op和Tensor都是类。
***.***它的含义很多,Java里面用的最多的大概就是System.out.println()语句了,你还知道它的含义吗?System是java.lang里面的一个类,而out就是System类里面的一个静态变量,而且这个变量是System类引用自java.io.PrintStream类,println()就是java.io.PrintStream类里的一个方法。
参见你了解System.out.println()的真正含义吗?
这里就是类.变量.方法。
一般在Java中比较常见的是类.变量或者类.方法,这种类.变量.方法的情况除了该例还是很少见的。