আমি কীভাবে কোনও ফোর-লুপে টীকা টানবো


93

আমি একটি- forলুপে একটি ধরণের ভেরিয়েবল টিকা দিতে চাই । আমি এটি চেষ্টা করেছি:

for i: int in range(5):
    pass

তবে এটি কার্যকর হয়নি, স্পষ্টতই।

আমি যা প্রত্যাশা করি তা পাইচার্ম 2016-এ স্বতঃসম্পূর্ণ কাজ করছে .3 এর আগে প্রাক-টিকা:

i: int
for i in range(5):
    pass

সাহায্য করে না

পিএস প্রাক-এনোটোটেশন পাইচার্ম> = 2017.1 এর জন্য কাজ করে


কেবলমাত্র একটি মন্তব্য: সাধারণত আপনার এটির প্রয়োজন হবে না কারণ প্রকারের কাজটি পরিসীমা থেকে নেওয়া হয় (এটি সমস্ত অভ্যন্তরীণ ঘোষিত ভেরিয়েবলগুলির জন্য প্রাসঙ্গিক)
gdoumenc

উত্তর:


124

পিইপি 526 অনুসারে , এটি অনুমোদিত নয়:

তদ্ব্যতীতforwith , কেউ একটি বা বিবৃতিতে ব্যবহৃত ভেরিয়েবলগুলি টিকা দিতে পারে না ; এগুলি প্যাকেজ আনপ্যাকিংয়ের একই পদ্ধতিতে সময়ের আগে টিকা দেওয়া যেতে পারে

লুপের আগে এনেটেট করুন:

i: int
for i in range(5):
    pass

পাইচার্ম 2018.1 এবং এখন লুপের ভিতরে চলকটির ধরণটি স্বীকৃতি দেয়। এটি পুরানো পাইচর্ম সংস্করণগুলিতে সমর্থিত ছিল না।


4
আমি চেষ্টা করেছিলাম, তবে শেষের স্থিতিশীল পাইচার্মে এটি কাজ করছে বলে মনে হয় না। আমি কমপক্ষে কোনও অটোকম্প্লেশন পাই না।
গ্রেপকেক

4
আমি পাইচার্ম 2018.1 ব্যবহার করছি এবং এটি এখন এই ফর্মটিকে স্বীকৃতি দেয়।
ফিলিওগন

4
@ ফিলোগলন চমৎকার! মাথা আপ জন্য ধন্যবাদ, সেই অনুযায়ী উত্তর আপডেট।
অ্যালেক্সেক্স

4
তবে একটি পরিদর্শনের তথ্য থাকবে Local variable 'i' value is not used
সিমিন জি

4
iমধ্যে i: intএখনও এমনকি ব্যবহার করা হবে আপনি ব্যবহার iলুপ। আমি মনে করি এটি এ জাতীয় টীকাটির জন্য একটি ত্রুটি।
সিমিন জি

38

আমি জানি না এই সমাধানটি পিইপি সামঞ্জস্যপূর্ণ কিনা বা পাইচার্মের কেবল একটি বৈশিষ্ট্য তবে আমি এটিকে এটির মতো করে কাজ করিয়েছি

for i in range(5): #type: int
  pass

এবং আমি পাইচার্ম কমিউনিটি সংস্করণ ব্যবহার করছি 2016.2.1


4
আপনাকে ধন্যবাদ, তবে আমি পিইপি 526 বিকল্পটি আটকে দেব
গ্রেপকেক

পিইপি 526 অনুসারী নয়, এটি পাইচার্মে কাজ করে (কমপক্ষে 2017.2.1 হিসাবে) এবং পাইথন 3.0.০-৩.৫-এ কাজ করার অতিরিক্ত সুবিধা রয়েছে (যা পাইথন ৩.6-এ প্রবর্তিত প্রাক-এনোটেশন সিনট্যাক্স সমর্থন করে না)।
ফিনিক্স

4
এফওয়াইআই: এই ফর্ম্যাটটি স্পষ্টভাবে অনুমোদিত / পিইপি 484-তে উল্লেখ রয়েছে (এছাড়াও পাইথন ২.7 সামঞ্জস্যপূর্ণ হতে পারে)
ক্লড


এই ফর্মটি / গণনা করা লুপগুলি এবং পাইচার্ম 2018 এর জন্যও কাজ করে eg যেমনfor index, area in enumerate(area_list): # type: int, AreaInfo
সরল ব্যবহারকারী

13

এটি পাইচার্মে আমার জন্য ভাল কাজ করে (পাইথন ৩. well ব্যবহার করে)

for i in range(5):
    i: int = i
    pass

আমি মনে করি এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, কারণ এটি ঠিক যা অনুরোধ করা হয়েছিল তা করে এবং বর্তমানে গৃহীত উত্তরটির বিপরীতে অন্য ত্রুটি এবং / বা সতর্কতা দেয় না।
জানি কর্ক্কিনেন

4
MyPy আসলে অভিযোগ করে যদি আপনি লুপের জন্য পরিবর্তনশীলটিকে নতুনভাবে সংজ্ঞায়িত করেন
Giovanni Di Milia

4
চলকটির নতুন সংজ্ঞা দেবেন না। i: intযথেষ্ট এবং আপনি কোনও অভিযোগ পাবেন না।
ব্যবহারকারী 136036

-4

আপনি যে পারবেন না তা বাদে এখানে প্রতিক্রিয়াগুলির কোনওটিই কার্যকর ছিল না। এমনকি গৃহীত উত্তরগুলি পিইপি 526 নথি থেকে সিনট্যাক্স ব্যবহার করে, যা বৈধ পাইথন সিনট্যাক্স নয়। আপনি যদি টাইপ করার চেষ্টা করেন

x: int

আপনি এটি একটি সিনট্যাক্স ত্রুটি দেখতে পাবেন।

এখানে একটি কার্যকর কাজ আছে:

for __x in range(5):
    x = __x  # type: int
    print(x)

আপনার কাজ দিয়ে x। পাইচার্ম এর ধরণটি স্বতঃপূরণ করে।


10
এটি পাইথন ৩.6 এর জন্য কমপক্ষে বৈধ বাক্য গঠন। পিইপি 526
গ্রেপকেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.