|
Re: Sky pie: a "var" keyword: msg#00042python.python-3000.devel
Neil Toronto wrote: > Marcin 'Qrczak' Kowalczyk wrote: > >> It should be: >> >> var x = 0 >> def f(): >> print x >> x = 3 >> >> for the global variable, and: >> >> var x = 0 >> def f(): >> var x >> print x >> x = 3 >> >> for the local variable. >> >> There are a few sane choices for the semantics of 'var': >> >> 1. The variable is visible from 'var' to the end of the scope. >> If 'var' doesn't specify an initial value, accessing the variable >> before it gets assigned to is an error. >> >> 2. The variable is visible from 'var' to the end of the scope. >> If 'var' doesn't specify an initial value, 'None' is used. >> >> 3. The variable is visible from the beginning to the end of the scope. >> Accessing the variable before the 'var' is executed is an error. >> If 'var' doesn't specify an initial value, 'None' is used. >> >> > > For the record, though I didn't present it this way in my initial > proposal, I like #1 and #2 better than #3. Otherwise, you'd get this > silliness: > > def f(): > x = 3 # fine, because the magic 'var' down below creates it > var x = 0 > > On the other hand... var x = 0 def f(): if sometest: var x = 3 x = 2 which is seriously evil, because it's not clear which 'x' the last assignment refers to. Maybe merely seeing "var" in a scope makes it a local, but using it before the "var" is an error. The other option is making nested blocks have their own scope, but I don't think Python wants to go there. Neil |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Sky pie: a "var" keyword: 00042, Neil Toronto |
|---|---|
| Next by Date: | Re: ugly pie: a "var" keyword: 00042, Antoine Pitrou |
| Previous by Thread: | Re: Sky pie: a "var" keywordi: 00042, Neil Toronto |
| Next by Thread: | Re: Sky pie: a "var" keyword: 00042, Marcin 'Qrczak' Kowalczyk |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |