I am reading only firstline
from python using :
with open(file_path, 'r') as f: my_count = f.readline() print(my_count)
I am bit confused over scope of variable my_count. Although prints work fine, would it be better to do something like my_count = 0
outside with statement first (for eg in C in used to do int my_count = 0
)
A variable declared at the top of a program or outside of a function is considered a global scope variable. Let's see an example of a global scope variable. In the above program, variable a is declared at the top of a program and is a global variable. It means the variable a can be used anywhere in the program.
In simple terms, scope of a variable is its lifetime in the program. This means that the scope of a variable is the block of code in the entire program where the variable is declared, used, and can be modified.
python allows creation of variables in an if... elif... else... clause, so that they can be used also outside the conditional block. This is also true for nested conditionals.
Summary. PHP has four types of variable scopes including local, global, static, and function parameters.
A with
statement does not create a scope (like if
, for
and while
do not create a scope either).
As a result, Python will analyze the code and see that you made an assignment in the with
statement, and thus that will make the variable local (to the real scope).
In Python variables do not need initialization in all code paths: as a programmer, you are responsible to make sure that a variable is assigned before it is used. This can result in shorter code: say for instance you know for sure that a list contains at least one element, then you can assign in a for
loop. In Java assignment in a for
loop is not considered safe (since it is possible that the body of the loop is never executed).
Initialization before the with
scope can be safer in the sense that after the with
statement we can safely assume that the variable exists. If on the other hand the variable should be assigned in the with
statement, not initializing it before the with
statement actually results in an additional check: Python will error if somehow the assignment was skipped in the with
statement.
A with statement is only used for context management purposes. It forces (by syntax) that the context you open in the with
is closed at the end of the indentation.
You should also go through PEP-343 and Python Documentation. It will clear that its not about creating scope its about using Context Manager. I am quoting python documentation on context manager
A context manager is an object that defines the runtime context to be established when executing a with statement. The context manager handles the entry into, and the exit from, the desired runtime context for the execution of the block of code. Context managers are normally invoked using the with statement (described in section The with statement), but can also be used by directly invoking their methods.
Typical uses of context managers include saving and restoring various kinds of global state, locking and unlocking resources, closing opened files, etc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With