python প্রোগ্রামিং - কিভাবে পাইথন মধ্যে বর্তমান সময় পেতে





কেন শিখব (25)


from time import ctime

// Day {Mon,Tue,..}
print ctime().split()[0]
// Month {Jan, Feb,..}
print ctime().split()[1]
// Date {1,2,..}
print ctime().split()[2]
// HH:MM:SS
print ctime().split()[3]
// Year {2018,..}
print ctime().split()[4]

যখন আপনি ctime কল করবেন () এটি 'দিন মাস তারিখ এইচএইচ: এমএম: এসএস ইয়ার' (উদাহরণস্বরূপ: 'Wed জানুয়ারী 17 16:53:22 2018') ফরম্যাটে কয়েক সেকেন্ডে রূপান্তর করবে, তখন আপনি split () পদ্ধতিটি কল করুন আপনার স্ট্রিং থেকে একটি তালিকা তৈরি করবে ['Wed', 'Jan', '17', '16:56:45', '2018'] (ডিফল্ট ডিলিমিটার স্থান)।

ব্রেকেট তালিকাতে চেয়েছিলেন যুক্তি 'নির্বাচন' ব্যবহার করা হয়।

এক শুধু একটি কোড লাইন কল করা উচিত। একজনকে তাদের মতো কল করা উচিত নয়, এটি একটি উদাহরণ ছিল, কারণ কিছু ক্ষেত্রে আপনাকে বিভিন্ন মান, বিরল কিন্তু অসম্ভব ক্ষেত্রে পাবেন না।

বর্তমান সময় পেতে ব্যবহৃত মডিউল / পদ্ধতি কি?




সহজ এবং সহজ:

datetime মডিউল ব্যবহার করে,

import datetime
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

আউটপুট:

2017-10-17 23:48:55

অথবা

time ব্যবহার করে,

import time
print(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()))

আউটপুট:

2017-10-17 18:22:26



এই সঙ্গে আমি শেষ পর্যন্ত কি শেষ:

>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")
01/09/2015 13:11

এছাড়াও, এই টেবিলে সঠিক ফর্ম্যাট কোডগুলি চয়ন করার জন্য একটি প্রয়োজনীয় রেফারেন্স যা আপনি চান তা ফর্ম্যাট করাতে (পাইথন "ডেটটাইম" ডকুমেন্টেশন থেকে here )।




http://crsmithdev.com/arrow/ থেকে তীর মডিউলের চেষ্টা করুন:

import arrow
arrow.now()

অথবা ইউটিসি সংস্করণ:

arrow.utcnow()

এর আউটপুট পরিবর্তন করতে, .format () যোগ করুন:

arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ')

একটি নির্দিষ্ট সময়সীমার জন্য:

arrow.now('US/Pacific')

এক ঘন্টা আগে:

arrow.utcnow().replace(hours=-1)

অথবা যদি আপনি Gist চান।

arrow.get('2013-05-11T21:23:58.970460+00:00').humanize()
>>> '2 years ago'



import datetime
date_time = str(datetime.datetime.now())
date = date_time.split()[0]
time = date_time.split()[1]

তারিখ মুদ্রণ তারিখ এবং সময় সময় মুদ্রণ করা হবে।




আপনি time মডিউল ব্যবহার করতে পারেন।

import time
print time.strftime("%d/%m/%Y")

>>> 06/02/2015

পুঁজি Y ব্যবহারটি সম্পূর্ণ বছর দেয়, এবং y ব্যবহার করে 06/02/15 দিতে হবে।

আপনি আরো দীর্ঘ সময় দিতে ব্যবহার করতে পারে।

time.strftime("%a, %d %b %Y %H:%M:%S")
>>> 'Fri, 06 Feb 2015 17:45:09'



আপনি যদি এমএসের বর্তমান টাইমস্ট্যাম্পটি চান (উদাহরণস্বরূপ, কার্যকর সময় পরিমাপ করতে), আপনি "টাইমাইট" মডিউলটি ব্যবহার করতে পারেন:

import timeit
start_time = timeit.default_timer()
do_stuff_you_want_to_measure()
end_time = timeit.default_timer()
print("Elapsed time: {}".format(end_time - start_time))



.isoformat() ডকুমেন্টেশনের মধ্যে রয়েছে, কিন্তু এখনো এখানে নেই (এটি @ রাই ওয়েগ এর উত্তরের মতো শক্তিশালী):

>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'



ব্যবহার করুন:

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2009, 1, 6, 15, 8, 24, 78915)

>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189

এবং শুধু সময়:

>>> datetime.datetime.now().time()
datetime.time(15, 8, 24, 78915)

>>> print(datetime.datetime.now().time())
09:17:51.914526

আরও তথ্যের জন্য ডকুমেন্টেশন দেখুন।

টাইপিং সংরক্ষণ করার জন্য, আপনি datetime মডিউল থেকে datetime অবজেক্ট আমদানি করতে পারেন:

>>> from datetime import datetime

তারপর নেতৃস্থানীয় datetime. মুছে ফেলুন datetime. উপরের সব থেকে।




সমস্ত ভাল পরামর্শ, তবে আমি নিজেকে ctime() ব্যবহার করার সবচেয়ে সহজ মনে করি:

In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'

এটি বর্তমান স্থানীয় সময়ের একটি চমত্কার বিন্যাসিত স্ট্রিং উপস্থাপনা দেয়।




>>> from datetime import datetime
>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')

এই উদাহরণের জন্য, আউটপুট এরকম হবে: '2013-09-18 11:16:32'

এখানে strftime তালিকা।




করা

from time import time

t = time()
  • t - ভাসা নম্বর, সময় অন্তর পরিমাপের জন্য ভাল।

ইউনিক্স এবং উইন্ডোজ প্ল্যাটফর্মের জন্য কিছু পার্থক্য রয়েছে।




আমি পাইথন বর্তমান সময় কিভাবে পেতে পারি?

time মডিউল

time মডিউল ফাংশন সরবরাহ করে যা আমাদেরকে "যুগ থেকে সেকেন্ড" এবং অন্যান্য ইউটিলিটিগুলিতে সময় বলে।

import time

ইউনিক্স যুগ সময়

এই ফর্ম্যাট আপনি ডাটাবেস সংরক্ষণের জন্য টাইমস্ট্যাম্প পেতে উচিত। এটি একটি সহজ ভাসমান বিন্দু সংখ্যা যা একটি পূর্ণসংখ্যা রূপান্তর করা যেতে পারে। এটি সিকিউরিটির জন্য কয়েক সেকেন্ডেও ভাল, কারণ এটি 1 জানুয়ারী, 1970 00:00:00 থেকে সেকেন্ডের সংখ্যাকে প্রতিনিধিত্ব করে এবং এটি অন্য স্মৃতির সাথে সম্পর্কিত স্মৃতির আলো যা আমরা পরের দিকে দেখব:

>>> time.time()
1424233311.771502

এই টাইমস্ট্যাম্পটি লিপ-সেকেন্ডের জন্য হিসাব করে না, তাই এটি রৈখিক নয় - লীপ সেকেন্ডগুলি উপেক্ষা করা হয়। সুতরাং এটি আন্তর্জাতিক ইউটিসি মানের সমান নয়, তবে এটি বন্ধ, এবং তাই রেকর্ড-রক্ষণের বেশিরভাগ ক্ষেত্রেই বেশ ভাল।

এই, যদিও মানুষের সময়সূচী জন্য আদর্শ নয়। যদি আপনার কোনও ভবিষ্যত ইভেন্ট থাকে তবে আপনি নির্দিষ্ট সময়ের মধ্যে এটি করতে চান তবে আপনি সেই সময়টি স্ট্রিং দিয়ে সংরক্ষণ করতে চান যা একটি ডেটাটাইম বস্তুতে প্যারেড করা যেতে পারে অথবা সিরিয়ালাইজড ডেটাটাইম অবজেক্ট (এটি পরে বর্ণিত হবে)।

time.ctime

আপনি আপনার অপারেটিং সিস্টেমের দ্বারা পছন্দসই ভাবে বর্তমান সময়টি উপস্থাপন করতে পারেন (যার মানে আপনি আপনার সিস্টেমের পছন্দগুলি পরিবর্তন করার সময় এটি পরিবর্তন করতে পারেন, তাই অন্য সকল সিস্টেমে মানসম্মত হতে এটিকে নির্ভর করবেন না, যেমন আমি অন্যদের আশা করেছি) । এটি সাধারণত ব্যবহারকারী বান্ধব, তবে ক্রমানুসারে ক্রমানুসারে সাজানো স্ট্রিংগুলিতে এটি সাধারণত ফলাফল নয়:

>>> time.ctime()
'Tue Feb 17 23:21:56 2015'

আপনি টাইমস্ট্যাম্পগুলিকে মানব পাঠযোগ্য আকারে ctime হাইড্রাইট করতে পারেন:

>>> time.ctime(1424233311.771502)
'Tue Feb 17 23:21:51 2015'

এই রূপান্তরটি রেকর্ড-রক্ষণের জন্যও ভাল নয় (পাঠ্য ব্যতীত যা শুধুমাত্র মানুষের দ্বারা প্যারাস করা হবে - এবং উন্নত অপটিক্যাল ক্যারেক্টার রেকগনিশন এবং আর্টিফিশিয়াল ইন্টেলিজেন্সের সাথে আমি মনে করি এই সংখ্যাগুলির সংখ্যা হ্রাস পাবে)।

datetime মডিউল

datetime মডিউলটি এখানেও বেশ দরকারী:

>>> import datetime

datetime.datetime.now

datetime.now একটি ক্লাস পদ্ধতি যা বর্তমান সময় প্রদান করে। এটি টাইমজোন তথ্য ছাড়াই time.localtime ব্যবহার করে (যদি না দেওয়া হয় তবে অন্যথায় time.localtime অবগত থাকুন)। এটি একটি উপস্থাপনা (যা আপনাকে একটি সমতুল্য বস্তু পুনরায় তৈরি করার অনুমতি দেয়) শেলটিতে প্রতিচ্ছবি হয়, কিন্তু যখন এটি মুদ্রিত (অথবা একটি str ) হয় তখন এটি মানব পাঠযোগ্য (এবং প্রায় আইএসও) ফর্ম্যাটে থাকে এবং লেক্সিকোগ্রাফিক সাজানোর সমান কালক্রমিক সাজানোর:

>>> datetime.datetime.now()
datetime.datetime(2015, 2, 17, 23, 43, 49, 94252)
>>> print(datetime.datetime.now())
2015-02-17 23:43:51.782461

utcnow এর utcnow

আপনি UTC সময়, একটি বিশ্বব্যাপী মানদন্ডের মধ্যে একটি ডটটাইম অবজেক্টটি পেতে পারেন:

>>> datetime.datetime.utcnow()
datetime.datetime(2015, 2, 18, 4, 53, 28, 394163)
>>> print(datetime.datetime.utcnow())
2015-02-18 04:53:31.783988

ইউটিসি একটি সময় মান যা প্রায় জিএমটি টাইমজোন সমান। (জিএমটি এবং ইউটিসি ডেলাইট সেভিংসের সময় পরিবর্তিত হয় না, তবে তাদের ব্যবহারকারী সামার সময় ব্রিটিশ গ্রীষ্মকালে অন্যান্য টাইমজোনগুলিতে যেতে পারে।)

সময়মত টাইমজোন সচেতন

যাইহোক, আমরা যে পর্যন্ত ডেটাটাইম অবজেক্ট তৈরি করেছি তা সহজেই বিভিন্ন টাইমজোনগুলিতে রূপান্তর করা যায়। আমরা pytz মডিউল সঙ্গে যে সমস্যা সমাধান করতে পারেন:

>>> import pytz
>>> then = datetime.datetime.now(pytz.utc)
>>> then
datetime.datetime(2015, 2, 18, 4, 55, 58, 753949, tzinfo=<UTC>)

সমানভাবে, পাইথন 3-এ আমাদের timezone ক্লাস রয়েছে যা একটি ইউটিসি timezone ইনস্ট্যান্স সংযুক্ত করে, যা বস্তুর টাইমজোন সচেতন করে তোলে (কিন্তু সহজ pytz মডিউল ব্যতীত অন্য টাইমজোন রূপান্তর করতে পাঠকের ব্যায়াম হিসাবে বাকি থাকে):

>>> datetime.datetime.now(datetime.timezone.utc)
datetime.datetime(2015, 2, 18, 22, 31, 56, 564191, tzinfo=datetime.timezone.utc)

এবং আমরা দেখতে পাই যে আমরা সহজেই আসল utc বস্তুর থেকে টাইমজোনগুলিতে রূপান্তর করতে পারি।

>>> print(then)
2015-02-18 04:55:58.753949+00:00
>>> print(then.astimezone(pytz.timezone('US/Eastern')))
2015-02-17 23:55:58.753949-05:00

এছাড়াও আপনি pytz টাইমজোন localize পদ্ধতির সাথে সচেতন একটি সাদাসিধে ডেটাটাইম অবজেক্টটি তৈরি করতে পারেন, বা টিজিইনফো বৈশিষ্ট্যটি প্রতিস্থাপন করে ( replace , এটি অন্ধভাবে সম্পন্ন করা হয়), তবে এটি সর্বোত্তম অনুশীলনগুলির চেয়ে বেশি শেষ রিসর্ট:

>>> pytz.utc.localize(datetime.datetime.utcnow())
datetime.datetime(2015, 2, 18, 6, 6, 29, 32285, tzinfo=<UTC>)
>>> datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
datetime.datetime(2015, 2, 18, 6, 9, 30, 728550, tzinfo=<UTC>)

pytz মডিউলটি আমাদের datetime অবজেক্টকে টাইমজোন সচেতন করতে এবং pytz মডিউলটিতে উপলব্ধ শত শত pytz মধ্যে রূপান্তর করতে দেয়।

ইউটিসি সময়ের জন্য এই বস্তুটিকে দৃশ্যমানভাবে সীমাবদ্ধ করে এবং একটি ডাটাবেসের মধ্যে সংরক্ষণ করতে পারে তবে এটি আরও বেশি মেমরির প্রয়োজন হবে এবং কেবল ইউনিক্স ইপোক সময়টি সংরক্ষণের চেয়ে ত্রুটিযুক্ত হতে হবে।

দেখার সময় অন্যান্য উপায় অনেক ত্রুটি প্রবণ, বিশেষত যখন বিভিন্ন সময় অঞ্চল থেকে আসা তথ্য সঙ্গে ডিল করা হয়। কোন টাইমজোন কোন স্ট্রিং বা সিরিয়ালাইজড ডটটাইম বস্তুর উদ্দেশ্যে কোনও বিভ্রান্তি নেই বলে আপনি চান।

আপনি যদি ব্যবহারকারীর জন্য ctime সাথে সময় প্রদর্শন করেন, তবে ctime সুন্দরভাবে কাজ করে, একটি টেবিলে নয় (এটি সাধারণত ভালভাবে সাজানো হয় না), তবে সম্ভবত ঘড়ির মধ্যে। যাইহোক, আমি পাইথনে সময় নিয়ে কাজ করার সময়, ব্যক্তিগতভাবে ইউনিক্স সময় ব্যবহার করে, অথবা টাইমজোন সচেতন UTC datetime অবজেক্ট ব্যবহার করে সুপারিশ করি।




আমি মিলিসেকেন্ড দিয়ে সময় পেতে চাই। তাদের পেতে একটি সহজ উপায়:

import time, datetime

print(datetime.datetime.now().time())                         # 11:20:08.272239

# Or in a more complicated way
print(datetime.datetime.now().time().isoformat())             # 11:20:08.272239
print(datetime.datetime.now().time().strftime('%H:%M:%S.%f')) # 11:20:08.272239

# But do not use this:
print(time.strftime("%H:%M:%S.%f", time.localtime()), str)    # 11:20:08.%f

কিন্তু আমি শুধু মিলিসেকেন্ড চাই, ঠিক? তাদের পেতে সবচেয়ে ছোট উপায়:

import time

time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 1000)
# 11:34:23.751

দশমিক বিন্দুর সংখ্যা সামঞ্জস্য করার জন্য শেষ গুণ থেকে জিরো যোগ করুন বা সরাও:

def get_time_str(decimal_points=3):
    return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)



>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

যে নির্দিষ্ট বিন্যাসে বর্তমান জিএমটি আউটপুট। একটি স্থানীয় সময় () পদ্ধতি আছে।

এই page আরো বিস্তারিত আছে।




বর্তমান সময় পেতে Pandas ব্যবহার, হাতে সমস্যাটি হত্যাকাণ্ডের উপর নির্ভর করে:

import pandas as pd
print (pd.datetime.now())
print (pd.datetime.now().date())
print (pd.datetime.now().year)
print (pd.datetime.now().month)
print (pd.datetime.now().day)
print (pd.datetime.now().hour)
print (pd.datetime.now().minute)
print (pd.datetime.now().second)
print (pd.datetime.now().microsecond)

আউটপুট:

2017-09-22 12:44:56.092642
2017-09-22
2017
9
22
12
44
56
92693



আপনি সময় time.strftime() ব্যবহার করতে পারেন:

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'



datetime.now() বর্তমান সময়টিকে একটি সাদাসিধে ডেটাটাইম অবজেক্ট হিসাবে প্রদান করে যা স্থানীয় সময় অঞ্চলটিতে সময় উপস্থাপন করে। যে মান দ্বিধান্বিত হতে পারে যেমন, ডিএসটি পরিবর্তন ("পিছনে ফিরে") সময়। উদ্বিগ্নতা এড়ানোর জন্য ইউটিসি টাইমজোন ব্যবহার করা উচিত:

from datetime import datetime

utc_time = datetime.utcnow()
print(utc_time) # -> 2014-12-22 22:48:59.916417

অথবা টাইমজোন-সচেতন বস্তু যার সাথে সংশ্লিষ্ট টাইমজোন তথ্য সংযুক্ত থাকে (পাইথন 3.2+):

from datetime import datetime, timezone

now = datetime.now(timezone.utc).astimezone()
print(now) # -> 2014-12-23 01:49:25.837541+03:00



আমেরিকার নৌবাহিনীর অফিসিয়াল টাইমপেইপার মার্কিন নৌযান কেন জিজ্ঞাসা করবেন না?

import requests
from lxml import html

page = requests.get('http://tycho.usno.navy.mil/cgi-bin/timer.pl')
tree = html.fromstring(page.content)
print(tree.xpath('//html//body//h3//pre/text()')[1])

যদি আপনি ডিসি এলাকায় থাকেন (আমার মত) তবে বিলম্বিততা হয়তো খুব খারাপ নাও হতে পারে ...




এই প্রশ্নটির জন্য শুধু একটি নতুন উত্তর দরকার নেই ... একটি চকচকে নতুন-আইশ খেলনা / মডিউল, তবে যথেষ্ট যুক্তিযুক্ত। যে Pendulum লাইব্রেরি , যা যা তীর প্রচেষ্টা চেষ্টা করা হয়, অভ্যন্তরীণ ত্রুটি এবং বাগ যা তীর beset ছাড়া ছাড়া।

উদাহরণস্বরূপ, মূল প্রশ্নটির উত্তর:

>>> import pendulum
>>> print(pendulum.now())
2018-08-14T05:29:28.315802+10:00
>>> print(pendulum.utcnow())
2018-08-13T19:29:35.051023+00:00

অনেকগুলি স্ট্যান্ডার্ড রয়েছে যার জন্য অনেকগুলি RFCs এবং আইএসও সহ অ্যাড্রেসিংয়ের প্রয়োজন হয়। কখনও তাদের মিশ্রিত পেতে; চিন্তা করবেন না, dir(pendulum.constants) একটু নজর দিন, যদিও সেখানে আরএফসি এবং আইএসও ফরম্যাটগুলির তুলনায় আরও কিছু আছে।

যখন আমরা স্থানীয় বলতে পারি, তবে আমরা কী বলতে চাচ্ছি? আচ্ছা আমি বলতে চাচ্ছি

>>> print(pendulum.now().timezone_name)
Australia/Melbourne
>>>

সম্ভবত আপনি বাকি বাকি কোথাও মানে।

এবং এটা যায়। লম্বা গল্প সংক্ষিপ্ত: পেন্ডুলামটি HTTP এবং HTTP এর জন্য অনুরোধগুলির তারিখ এবং সময়গুলির জন্য কী করার প্রচেষ্টা করে। এটি বিবেচনার যোগ্য, বিশেষ করে এটির ব্যবহারের সহজ এবং ব্যাপক ডকুমেন্টেশন উভয়ের জন্য।




আমি ফরম্যাট ছাড়া সময় পেতে ব্যবহার করে নিম্নলিখিত। কিছু লোক বিভক্ত পদ্ধতি পছন্দ করে না, তবে এটি এখানে দরকারী:

from time import ctime
print ctime().split()[3]

এটি এইচ এইচ এ মুদ্রণ করবে: এমএম: এসএস বিন্যাস।




প্রথমে ডেটটাইম থেকে ডেটটাইম মডিউল আমদানি করুন

from datetime import datetime

তারপরে বর্তমান সময়টি 'yyy-mm-dd hh: mm: ss' হিসাবে মুদ্রণ করুন।

print(str(datetime.now())

'এইচএইচ: মিমি: এসএস' ফর্মটি শুধুমাত্র সময় পেতে যেখানে এসএস পূর্ণ সেকেন্ডের জন্য দাঁড়িয়ে থাকে এবং সেকেন্ডের ভগ্নাংশ বিলুপ্ত হয়ে যায়, ঠিক আছে;

print(str(datetime.now()[11:])

Datetime.now () কে একটি স্ট্রিং রূপে রূপান্তরিত করে এমন একটি উত্তর জোগান দেয় যা নিয়মিত তারিখ এবং সময়গুলির মতো মনে করে এমন ফর্ম্যাটে থাকে।




আপনি সময়টি পেতে এই ফাংশনটি ব্যবহার করতে পারেন (দুর্ভাগ্যবশত এটি AM বা PM না বলে):

def gettime():
        from datetime import datetime
        return ((str(datetime.now())).split(' ')[1]).split('.')[0]

পরে একত্রিত করার জন্য ঘন্টা, মিনিট, সেকেন্ড এবং মিলিসেকেন্ড পেতে, আপনি এই ফাংশন ব্যবহার করতে পারেন:

ঘন্টা:

def gethour():
        from datetime import datetime
        return return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[0]

মিনিট:

def getminute():
        from datetime import datetime
        return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[1]

দ্বিতীয়ত:

def getsecond():
        from datetime import datetime
        return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[2]

মিলিসেকেন্ডে:

def getmillisecond():
        from datetime import datetime
        return return (str(datetime.now())).split('.')[1]



ডিফল্টরূপে, now() ফাংশন YYYY-MM-DD HH:MM:SS:MS আউটপুট প্রদান করে YYYY-MM-DD HH:MM:SS:MS ফর্ম্যাট। পাইথন স্ক্রিপ্টের বর্তমান তারিখ এবং সময় পেতে স্ক্রিনে ফলাফলগুলি নিচের নমুনা স্ক্রিপ্টটি ব্যবহার করুন। নীচের বিষয়বস্তু দিয়ে file getDateTime1.py তৈরি করুন।

import datetime

currentDT = datetime.datetime.now()
print (str(currentDT))

আউটপুট নিচে মত দেখাচ্ছে:

2018-03-01 17:03:46.759624



(আমার নিচের উত্তরটি কেবল পাইথন জেনারেটর ব্যবহারের দৃষ্টিকোণ থেকে কথা বলে , জেনারেটর প্রক্রিয়াটির অন্তর্নিহিত বাস্তবায়ন নয় , যা স্ট্যাক এবং হিপ ম্যানিপুলেশনয়ের কিছু কৌশল যুক্ত করে।)

যখন yieldএকটি পরিবর্তে ব্যবহার করা হয় returnএকটি পাইথন ফাংশন, যে ফাংশন বিশেষ কিছু বলা পরিণত হয় generator function। যে ফাংশন generatorটাইপ একটি বস্তু ফিরে আসবে । শব্দ পাইথন কম্পাইলার অবহিত করার যেমন ফাংশন বিশেষভাবে চিকিত্সা একটি পতাকা আছে। কিছু মান এটি থেকে ফিরে একবার একবার ফাংশন শেষ হবে। কিন্তু কম্পাইলারের সাহায্যে, জেনারেটর ফাংশনটি পুনরায় শুরু করা যেতে পারে । অর্থাৎ, মৃত্যুদন্ড প্রেক্ষাপটে পুনরুদ্ধার করা হবে এবং মৃত্যুদন্ড শেষ চলবে। আপনি স্পষ্টভাবে ফিরতি কল না হওয়া পর্যন্ত, যা একটি ব্যতিক্রম উত্থাপন করবে (যা ইটারার প্রোটোকলের অংশ), বা ফাংশনের শেষে পৌছবে। আমি রেফারেন্স অনেক পাওয়া কিন্তু এই oneyieldStopIterationgeneratoroneথেকে functional programming perspectiveসবচেয়ে digestable হয়।

(এখন আমি পিছনে যুক্তিটির কথা বলি generator, এবং iteratorআমার নিজের বোঝার উপর ভিত্তি করে কথা বলতে চাই। আশা করি এটি আপনাকে ইটারেটর এবং জেনারেটরের প্রয়োজনীয় প্রেরণা বুঝতে সাহায্য করবে । এই ধারণাটি অন্যান্য ভাষার পাশাপাশি সি # যেমন দেখায়।)

আমি বুঝি, যখন আমরা তথ্য একটি গুচ্ছ প্রক্রিয়া করতে চান, আমরা সাধারণত প্রথমে কোথাও তথ্য সংরক্ষণ এবং তারপর এক এক প্রক্রিয়া। কিন্তু এই স্বজ্ঞাত পদ্ধতির সমস্যাযুক্ত। যদি ডাটা ভলিউমটি বিশাল হয়, তবে এটি আগে থেকেই সম্পূর্ণ সঞ্চয় করা ব্যয়বহুল। সুতরাং dataসরাসরি নিজেই সংরক্ষণ করার পরিবর্তে , কেন কিছু metadataপরোক্ষভাবে সংরক্ষণ করবেন না , অর্থাত্the logic how the data is computed

যেমন মেটাডাটা মোড়ানো 2 পন্থা আছে।

  1. OO পদ্ধতি, আমরা মেটাডাটা মোড়ানো as a class। এটি তথাকথিত iteratorইথারেটর প্রোটোকল প্রয়োগ করে (অর্থাৎ __next__(), এবং __iter__()পদ্ধতি)। এটি সাধারণত দেখা যায় ইটারারেটরের নকশা প্যাটার্ন
  2. কার্যকরী পদ্ধতি, আমরা মেটাডাটা মোড়ানো as a function। এই তথাকথিত generator function। কিন্তু ফণা অধীন, ফিরে generator objectএখনও IS-Aiterator কারণ এটি পুনরুক্তিকারীর প্রোটোকল।

উভয় উপায়ে, একটি থালা তৈরি করা হয়, অর্থাৎ কিছু বস্তু যা আপনাকে আপনার প্রয়োজনীয় তথ্য দিতে পারে। ওও পদ্ধতির একটু জটিল হতে পারে। যাইহোক, কোনটি ব্যবহার করতে আপনার উপরে।







python datetime time