As follow is my understanding of types & parameters passing in java and python: In java, there are primitive types and non-primitive types. Former are not object, latter are objects. In python, they are all objects. In java, arguments are passed by value because: primitive types are copied and then passed, so they are passed by value for sure. non-primitive types are passed by reference but reference(pointer) is also value, so they are also passed by value. In python, the only difference is that 'primitive types'(for example, numbers) are not copied, but simply taken as objects. Based on official doc, arguments are passed by assignment. What does it mean by 'passed by assignment'? Is objects in java work the same way as python? What result in the difference (passed by value in java and passed by argument in python)? And is there any wrong understanding above? Continue reading...