forked from Pierian-Data/Complete-Python-3-Bootcamp
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
680c67a
commit 1cef96f
Showing
32 changed files
with
148 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# This is the module we will be importing from! | ||
# Great resource: https://docs.python.org/3/tutorial/modules.html | ||
|
||
def func_in_mymodule(): | ||
print("I am a function inside of the mymodule.py file!") |
34 changes: 34 additions & 0 deletions
34
06-Modules and Packages/00-Modules_and_Packages/myprogram.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
################ | ||
# Example Three: | ||
################ | ||
# Uncomment this and comment everything else to run! | ||
|
||
# import mymodule | ||
# mymodule.func_in_mymodule() | ||
|
||
################ | ||
# Example Two: | ||
################ | ||
# Uncomment this and comment everything else to run! | ||
|
||
# import mymodule as mm | ||
# mm.func_in_mymodule() | ||
|
||
################ | ||
# Example Three: | ||
################ | ||
# Uncomment this and comment everything else to run! | ||
|
||
# from mymodule import func_in_mymodule | ||
# func_in_mymodule() | ||
|
||
################ | ||
# Example Four: | ||
################ | ||
# Uncomment this and comment everything else to run! | ||
|
||
# This is posisble but frowned upon, often causes poorly readable code because | ||
# you don't know what functions come from mymodule | ||
|
||
# from mymodule import * | ||
# func_in_mymodule() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
Sometimes when you are importing from a module, you would like to know whether | ||
a modules function is being used as an import, or if you are using the original | ||
.py file of that module. In this case we can use the: | ||
|
||
if __name__ == "__main__": | ||
|
||
line to determine this. For example: | ||
|
||
When your script is run by passing it as a command to the Python interpreter: | ||
|
||
python myscript.py | ||
|
||
all of the code that is at indentation level 0 gets executed. Functions and | ||
classes that are defined are, well, defined, but none of their code gets ran. | ||
Unlike other languages, there's no main() function that gets run automatically | ||
- the main() function is implicitly all the code at the top level. | ||
|
||
In this case, the top-level code is an if block. __name__ is a built-in variable | ||
which evaluate to the name of the current module. However, if a module is being | ||
run directly (as in myscript.py above), then __name__ instead is set to the | ||
string "__main__". Thus, you can test whether your script is being run directly | ||
or being imported by something else by testing | ||
|
||
if __name__ == "__main__": | ||
... | ||
|
||
If that code is being imported into another module, the various function and | ||
class definitions will be imported, but the main() code won't get run. As a | ||
basic example, consider the following two scripts: | ||
|
||
# file one.py | ||
def func(): | ||
print("func() in one.py") | ||
|
||
print("top-level in one.py") | ||
|
||
if __name__ == "__main__": | ||
print("one.py is being run directly") | ||
else: | ||
print("one.py is being imported into another module") | ||
|
||
and then: | ||
|
||
# file two.py | ||
import one | ||
|
||
print("top-level in two.py") | ||
one.func() | ||
|
||
if __name__ == "__main__": | ||
print("two.py is being run directly") | ||
else: | ||
print("two.py is being imported into another module") | ||
|
||
Now, if you invoke the interpreter as | ||
|
||
python one.py | ||
|
||
The output will be | ||
|
||
top-level in one.py | ||
|
||
one.py is being run directly | ||
If you run two.py instead: | ||
|
||
python two.py | ||
|
||
You get | ||
|
||
top-level in one.py | ||
one.py is being imported into another module | ||
top-level in two.py | ||
func() in one.py | ||
two.py is being run directly | ||
|
||
Thus, when module one gets loaded, its __name__ equals "one" instead of __main__. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
def func(): | ||
print("func() ran in one.py") | ||
|
||
print("top-level print inside of one.py") | ||
|
||
if __name__ == "__main__": | ||
print("one.py is being run directly") | ||
else: | ||
print("one.py is being imported into another module") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
import one | ||
|
||
print("top-level in two.py") | ||
|
||
one.func() | ||
|
||
if __name__ == "__main__": | ||
print("two.py is being run directly") | ||
else: | ||
print("two.py is being imported into another module") |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.