[Tutor] beginning to code
On 22/09/2017 10:23, Marko Rauhamaa wrote:
> Bill <BILL_NOSPAM at whoknows.net>:
>> I figure that, internally, an address, a pointer, is being passed by
>> value to implement pass by reference. Why do you say "they are right"
>> above? Are you saying it's not pass by reference?
> "Pass by reference" could be "pass by reference to object" (Python,
> to Pascal and C++).
> Memory slots (or lvalues, as they are known in C) are not first class
> objects in Python, which makes "pass by reference to memory slot" a bit
> tricky in Python. Python *could* add memory slots to its sanctioned
> collection of object types, and it *could* add special syntax to express
> a memory slot reference and dereference ("&" and "*" in C).
> However, Python doesn't need any language changes to implement memory
> slots. A memory slot could be defined as any object that implements
> "get()" and "set(value)" methods:
I didn't understand your examples.
Can Python be used to write, say, a swap() function that works with any
argument types (not just classes or lists)? Example:
def swap(&a,&b): # made up syntax
a, b = b, a
print (x,y) # "Z" and "10"
If not, then it doesn't have reference passing as it is normally understood.
A simpler example:
a = value
Here the type of x is irrelevant anyway. It doesn't even need to be
initialised to anything first (that might violate something in Python, I
don't know what).