অজগরে ফাংশনস ইন বিল্ট কীভাবে কাজ করে তা দেখার কোনও উপায় আছে? আমি কেবল এগুলি কীভাবে ব্যবহার করব তা বোঝাতে চাইছি না, তবে সেগুলি কীভাবে তৈরি করা হয়েছে, বাছাই করা বা গণনা করা ইত্যাদির পিছনে কোডটি কী ...?
অজগরে ফাংশনস ইন বিল্ট কীভাবে কাজ করে তা দেখার কোনও উপায় আছে? আমি কেবল এগুলি কীভাবে ব্যবহার করব তা বোঝাতে চাইছি না, তবে সেগুলি কীভাবে তৈরি করা হয়েছে, বাছাই করা বা গণনা করা ইত্যাদির পিছনে কোডটি কী ...?
উত্তর:
পাইথন ওপেন সোর্স হওয়ায় আপনি সোর্স কোডটি পড়তে পারেন ।
কোনও মডিউল বা ফাংশন কোন ফাইলটি আপনার প্রয়োগ করা হয় তা অনুসন্ধান করতে আপনি সাধারণত __file__
বৈশিষ্ট্যটি মুদ্রণ করতে পারেন । বিকল্পভাবে, আপনি inspect
মডিউলটি ব্যবহার করতে পারেন , এর ডকুমেন্টেশনে সোর্স কোডটি পুনরুদ্ধার করা বিভাগটি দেখুন inspect
।
অন্তর্নির্মিত ক্লাস এবং পদ্ধতিগুলির জন্য এটি এতটা সহজ নয় inspect.getfile
এবং inspect.getsource
অবজেক্টটি অন্তর্নির্মিত বলে উল্লেখ করে কোনও ধরণের ত্রুটি ফিরে আসবে। তবে Objects
পাইথন উত্স ট্রাঙ্কের উপ-ডিরেক্টরিতে অনেকগুলি অন্তর্নির্মিত ধরণের সন্ধান পাওয়া যায় । উদাহরণস্বরূপ, দেখুন এখানে গনা বর্গ বাস্তবায়ন জন্য অথবা এখানে বাস্তবায়নের list
প্রকার।
sorted()
হয় /Python/bltinmodule.c যদিও এটা ঠিক কল list.sort()
তাই বাস্তব উৎস রয়েছে /Objects/listobject.c
@ ক্রিসের উত্তর পরিপূরক করার জন্য এখানে একটি কুকবুক উত্তর দেওয়া হয়েছে , সিপিথন গিটহাব এ চলে গেছে এবং মার্কুরিয়াল সংগ্রহস্থল আর আপডেট হবে না:
git clone https://github.com/python/cpython.git
কোড cpython
-> নামক একটি উপ-ডিরেক্টরিতে চেকআউট করবেcd cpython
print()
...egrep --color=always -R 'print' | less -R
Python/bltinmodule.c
->builtin_print()
উপভোগ করুন।
নীচের উত্সটি খুঁজতে আমাকে কিছুটা খনন করতে Built-in Functions
হয়েছিল কারণ অনুসন্ধানে হাজার হাজার ফলাফল পাওয়া যাবে। (শুভকামনা এটির উত্সটি কোথায় তা খুঁজে বের করার জন্য যে কোনওটির জন্য অনুসন্ধান করুন)
যাইহোক, bltinmodule.c
ফাংশন দিয়ে শুরু করে সমস্ত ফাংশন সংজ্ঞায়িত হয়builtin_{functionname}
অন্তর্নির্মিত উত্স: https://github.com/python/cpython/blob/master/Python/bltinmodule.c
অন্তর্নির্মিত প্রকারের জন্য: https://github.com/python/cpython/tree/master/Objects
listobject.c
github.com/python/cpython/tree/master/Objects
IPython : শেল এই সহজ করে তোলে function?
আপনি ডকুমেন্টেশন দেব। function??
কোডও দেখায় তবে এটি কেবল খাঁটি অজগর ফাংশনগুলির জন্যই কাজ করে।
তারপরে আপনি সর্বদা (সি) পাইথনের উত্স কোডটি ডাউনলোড করতে পারেন ।
আপনি যদি মূল কার্যকারিতার অজগর বাস্তবায়নে আগ্রহী হন তবে পাইপাই উত্সটি দেখুন a
2 পদ্ধতি,
help()
inspect
1) পরিদর্শন:
আপনি যে কোডটি চান সেটি অন্বেষণ করতে ইনপ্যাক্ট মডিউলটি ব্যবহার করুন ... দ্রষ্টব্য: আপনি কেবলমাত্র আমদানি করা মডিউলগুলি (ওরফে) প্যাকেজের জন্য কোড অন্বেষণ করতে পারবেন
যেমন:
>>> import randint
>>> from inspect import getsource
>>> getsource(randint) # here i am going to explore code for package called `randint`
2) সহায়তা ():
help()
বিল্টিন ফাংশনগুলির পাশাপাশি এর কোড সম্পর্কে সহায়তা পেতে আপনি কেবল কমান্ডটি ব্যবহার করতে পারেন ।
যেমন: আপনি যদি স্ট্র (() এর কোড দেখতে চান তবে সহজভাবে টাইপ করুন - help(str)
এটি এভাবে ফিরে আসবে,
>>> help(str)
Help on class str in module __builtin__:
class str(basestring)
| str(object='') -> string
|
| Return a nice string representation of the object.
| If the argument is a string, the return value is the same object.
|
| Method resolution order:
| str
| basestring
| object
|
| Methods defined here:
|
| __add__(...)
| x.__add__(y) <==> x+y
|
| __contains__(...)
| x.__contains__(y) <==> y in x
|
| __eq__(...)
| x.__eq__(y) <==> x==y
|
| __format__(...)
| S.__format__(format_spec) -> string
|
| Return a formatted version of S as described by format_spec.
|
| __ge__(...)
| x.__ge__(y) <==> x>=y
|
| __getattribute__(...)
-- More --
বেশ অজানা সংস্থানটি পাইথন বিকাশকারী গাইড ।
একটি (কিছুটা) সাম্প্রতিক জিএইচ ইস্যুতে , আপনি যে প্রশ্নটি জিজ্ঞাসা করছেন সে বিষয়ে সম্বোধনের জন্য একটি নতুন অধ্যায় যুক্ত করা হয়েছে: সিপিথন উত্স কোড বিন্যাস । যদি কিছু পরিবর্তন হয় তবে সেই সংস্থানটিও আপডেট হবে get
@ জিম দ্বারা উল্লিখিত হিসাবে, ফাইল সংগঠনটি এখানে বর্ণিত হয়েছে । সহজে আবিষ্কারের জন্য পুনরুত্পাদন:
পাইথন মডিউলগুলির জন্য, সাধারণ বিন্যাসটি হ'ল:
Lib/<module>.py Modules/_<module>.c (if there’s also a C accelerator module) Lib/test/test_<module>.py Doc/library/<module>.rst
কেবল এক্সটেনশান-মডিউলগুলির জন্য, সাধারণ লেআউটটি হ'ল:
Modules/<module>module.c Lib/test/test_<module>.py Doc/library/<module>.rst
অন্তর্নির্মিত ধরণের জন্য, সাধারণ লেআউটটি হ'ল:
Objects/<builtin>object.c Lib/test/test_<builtin>.py Doc/library/stdtypes.rst
বিল্টিন ফাংশনগুলির জন্য, সাধারণ লেআউটটি হ'ল:
Python/bltinmodule.c Lib/test/test_builtin.py Doc/library/functions.rst
কিছু ব্যতিক্রম:
builtin type int is at Objects/longobject.c builtin type str is at Objects/unicodeobject.c builtin module sys is at Python/sysmodule.c builtin module marshal is at Python/marshal.c Windows-only module winreg is at PC/winreg.c
enumerate
?