-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpy36.py
More file actions
75 lines (48 loc) · 3.09 KB
/
py36.py
File metadata and controls
75 lines (48 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
""" برنامه نویسی ماژولار"""
# چند استلاح پر کاربرد
# اسکریپت => به فایلی که مستقل کد خود را خودش اجرا کند
# ماژول => مستقل نیست و خودش نمیتواند خروجی بدهد و باید یک اسکریپت از آن استفاده کند
# پکیج => به وابسته شدن و استفاده از چند ماژول برای انجام یک کاری پکیج میگویند
# کتابخانه => به جمع چند پکیج کتابخانه گفته میشود
# به ماژول هایی که با زبانی دیگر نوشته شدند اکستنشن ماژول میگویند
# نحوه ایمپورت کردن
import random
from random import randint # برای ایمپورت کردن فیچری از ماژول
# تغیر اسم ماژول در فایل برای استفاده راحت تر
import random as rn
from random import randint as rint
# برای ایمپورت همه ی فیچر های یک ماژول
from random import *
# برای پند بار ایمپورت کردن یک ماژول
# استفاده از یک کتابخانه لازم است
import importlib
importlib.reload(random)
# پیدا کردن مسیر ماژول
print(random.__file__)
"""فایل ماژول"""
# برای مخفی کردن فیچری از ایمپورت بغیر از زمانی که عینا خود فیچر ایمپورت شده
# از _ قبل اسم فیچر استفاده میکنیم
_num = 18
# from user import _num => فقط در این صورت فابل دسترسی هست
# برای محدودیت دادن به ایمپورت * همه
__all__ = ['num', 'users'] # اسم فیچر های که دوست داری مجاز باشند را مینویسی
"""چگونه یک فایل هم اسکریپت باشد هم ماژول"""
# یعنی یکسری کد ها ماژولار و وابسته به فیل پدر و یکسری مستقل و خود اجرا باشند
# باید کد های اسکریپتی را داخل شرطی برای اجرا قرار دهید
# یک متغیر به اسم name بسازید
name = 'faeze'
# از این متد استفاده میکنیم
print(__name__)
# اگر داخل همان فایل باشد __main__ را برمیگرداند
# ولی اگر داخل یک فایل دیگر به صورت ایمپورت شده استفاده شود همان ولیو متغیر را برمیگرداند
# با یک شرط ساده میتوانیم بگویم اگر داخل فایل دارد فراخوانی میشود یعنی اسکریپت است و در غیر اینصورت ماژول است
# پس زمانی که اسکریپت است این تابع ها را فراخوانی کن در غیر اینصورت ماژول مستقل کاری انجام نمیدهد
if __name__ == '__main__':
#صدا زدن تابع هایی که اسکریپت هستند
print(_num)
else:
pass
# داخل ماژول میتوانید از داک استرینگ استفاده کنید
""" معرفی ماژول و نحوه کارکرد """
import py37 as mj
mj.__doc__ # => "__init__.py"