คำถามติดแท็ก python-3.x

สำหรับคำถามเกี่ยวกับการเขียนโปรแกรม Python ที่เฉพาะเจาะจงกับภาษารุ่น 3 ขึ้นไป ใช้แท็ก [หลาม] ทั่วไปมากขึ้นหากคำถามของคุณไม่เฉพาะรุ่น ใช้แท็ก [python-2.x] สำหรับคำถาม Python 2

19
แปลงไบต์เป็นสตริง
ฉันใช้รหัสนี้เพื่อรับเอาต์พุตมาตรฐานจากโปรแกรมภายนอก: >>> from subprocess import * >>> command_stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0] วิธีการสื่อสาร () วิธีการส่งกลับอาร์เรย์ไบต์: >>> command_stdout b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n' อย่างไรก็ตามฉันต้องการทำงานกับผลลัพธ์เป็นสตริง Python ปกติ เพื่อให้ฉันสามารถพิมพ์ได้เช่นนี้ >>> print(command_stdout) -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1 …
2307 python  string  python-3.x 

10
ทำไม“ 1000000000000000 ในช่วง (1000000000000001)” เร็วมากใน Python 3
ฉันเข้าใจว่าrange()ฟังก์ชั่นซึ่งจริงๆแล้วเป็นประเภทวัตถุใน Python 3สร้างเนื้อหาในทันทีคล้ายกับเครื่องกำเนิด นี่เป็นกรณีที่ฉันคาดว่าบรรทัดต่อไปนี้จะใช้เวลามากเกินไปเพราะในการพิจารณาว่า 1 quadrillion อยู่ในช่วงหรือไม่ต้องสร้างค่า quadrillion: 1000000000000000 in range(1000000000000001) ยิ่งกว่านั้น: ดูเหมือนว่าไม่ว่าฉันจะเพิ่มศูนย์เป็นจำนวนเท่าใดการคำนวณมากหรือน้อยก็ใช้เวลาเท่ากัน ฉันได้ลองสิ่งนี้เช่นกัน แต่การคำนวณก็ยังเกือบจะทันที: 1000000000000000000000 in range(0,1000000000000000000001,10) # count by tens ถ้าฉันพยายามที่จะใช้ฟังก์ชั่นพิสัยของตัวเองผลที่ออกมาไม่ค่อยดีเท่าไหร่ !! def my_crappy_range(N): i = 0 while i < N: yield i i += 1 return อะไรคือสิ่งที่range()วัตถุที่ทำภายใต้ประทุนที่ทำให้มันอย่างรวดเร็ว? คำตอบ Martijn Pieters'ได้รับเลือกเพื่อความสมบูรณ์ของมัน แต่ยังเห็นคำตอบแรก abarnert ของสำหรับการสนทนาที่ดีของสิ่งที่มันหมายถึงการrangeที่จะเป็นที่เต็มเปี่ยมลำดับในหลาม 3 และข้อมูลบางส่วน / คำเตือนเกี่ยวกับความไม่ลงรอยกันศักยภาพในการ__contains__เพิ่มประสิทธิภาพการทำงานข้ามการใช้งานหลาม …


13
วิธีการล้างเอาท์พุทของฟังก์ชั่นการพิมพ์?
Наэтотвопросестьответына กองมากเกินнарусском : Каквทุบตีконвейереиспользоватьвыводизหลามсразу? ฉันจะบังคับให้ฟังก์ชั่นการพิมพ์ของ Python ส่งออกไปยังหน้าจอได้อย่างไร นี่ไม่ใช่สิ่งที่ซ้ำกันของปิดใช้งานการบัฟเฟอร์เอาต์พุต - คำถามที่เชื่อมโยงกำลังพยายามเอาท์พุทที่ไม่มีบัฟเฟอร์ในขณะที่มันเป็นเรื่องทั่วไป คำตอบยอดนิยมในคำถามนั้นมีพลังมากเกินไปหรือเกี่ยวข้องกับคำถามนี้ (ไม่ใช่คำตอบที่ดีสำหรับเรื่องนี้) และเป็นคำถามที่พบได้ใน Google โดยมือใหม่ที่เป็นญาติ

30
ฉันจะแสดง 'Enum' ใน Python ได้อย่างไร
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันเป็นนักพัฒนาซอฟต์แวร์ C # เป็นหลัก แต่ปัจจุบันฉันทำงานโครงการใน Python ฉันจะเป็นตัวแทนของ Enum ใน Python ได้อย่างไร
1143 python  python-3.x  enums 


3
วิธีที่ดีที่สุดในการแปลงสตริงเป็นไบต์ใน Python 3
ดูเหมือนจะมีสองวิธีในการแปลงสตริงเป็นไบต์ตามที่เห็นในคำตอบของTypeError: 'str' ไม่รองรับส่วนต่อประสานบัฟเฟอร์ วิธีใดต่อไปนี้จะดีกว่าหรือไพ ธ อน หรือมันเป็นเพียงเรื่องของการตั้งค่าส่วนตัว? b = bytes(mystring, 'utf-8') b = mystring.encode('utf-8')

20
วิธีคัดลอกพจนานุกรมและแก้ไขเฉพาะสำเนา
ใครช่วยอธิบายสิ่งนี้ให้ฉันได้ไหม นี่ไม่สมเหตุสมผลเลยสำหรับฉัน ฉันคัดลอกพจนานุกรมไปที่อื่นและแก้ไขครั้งที่สองและทั้งคู่เปลี่ยนไป ทำไมสิ่งนี้จึงเกิดขึ้น >>> dict1 = {"key1": "value1", "key2": "value2"} >>> dict2 = dict1 >>> dict2 {'key2': 'value2', 'key1': 'value1'} >>> dict2["key2"] = "WHY?!" >>> dict1 {'key2': 'WHY?!', 'key1': 'value1'}

12
ฉันควรใส่ #! (shebang) ในสคริปต์ Python และควรใช้รูปแบบใด
ฉันควรใส่ shebang ในสคริปต์ Python ของฉันหรือไม่ ในรูปแบบใด #!/usr/bin/env python หรือ #!/usr/local/bin/python เหล่านี้พกพาได้อย่างเท่าเทียมกัน? รูปแบบใดที่ใช้มากที่สุด หมายเหตุ:ทอร์นาโดโครงการใช้ shebang ในทางตรงกันข้ามโครงการ Djangoก็ทำไม่ได้

22
ใช้ Python 3 ใน virtualenv
การใช้virtualenvฉันใช้งานโครงการของฉันด้วย Python (2.7) เวอร์ชันเริ่มต้น ในโครงการหนึ่งฉันต้องใช้ Python 3.4 ฉันเคยbrew install python3ติดตั้งลงบน Mac ของฉัน ตอนนี้ฉันจะสร้าง virtualenv ที่ใช้รุ่นใหม่ได้อย่างไร เช่น sudo virtualenv envPython3 ถ้าฉันลอง: virtualenv -p python3 test ฉันเข้าใจ: Running virtualenv with interpreter /usr/local/bin/python3 Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4' New python executable in test/bin/python3.4 Also creating executable in test/bin/python Failed to import the site module …

8
จะคืนค่าคีย์พจนานุกรมเป็นรายการใน Python ได้อย่างไร
ในPython 2.7 , ฉันจะได้รับพจนานุกรมคีย์ , ค่าหรือรายการที่เป็นรายการ: >>> newdict = {1:0, 2:0, 3:0} >>> newdict.keys() [1, 2, 3] ตอนนี้ในPython> = 3.3ฉันได้รับสิ่งนี้: >>> newdict.keys() dict_keys([1, 2, 3]) ดังนั้นฉันต้องทำสิ่งนี้เพื่อรับรายการ: newlist = list() for i in newdict.keys(): newlist.append(i) ฉันสงสัยว่ามีวิธีที่ดีกว่าในการส่งคืนรายการในPython 3หรือไม่?

10
การนำเข้าสัมพัทธ์ใน Python 3
ฉันต้องการนำเข้าฟังก์ชั่นจากไฟล์อื่นในไดเรกทอรีเดียวกัน บางครั้งมันก็ใช้ได้สำหรับฉันด้วยfrom .mymodule import myfunctionแต่บางครั้งฉันก็: SystemError: Parent module '' not loaded, cannot perform relative import บางครั้งก็ใช้งานได้from mymodule import myfunctionแต่บางครั้งฉันก็มี: SystemError: Parent module '' not loaded, cannot perform relative import ฉันไม่เข้าใจตรรกะที่นี่และฉันไม่สามารถหาคำอธิบายใด ๆ มันดูสุ่มอย่างสมบูรณ์ มีคนอธิบายให้ฉันฟังหน่อยว่าตรรกะอะไรที่อยู่เบื้องหลังทั้งหมดนี้

10
__pycache__ คืออะไร
Наэтотвопросестьответына กองมากเกินнарусском : Впапкепроектанаหลามпоявиласьпапка __pycache__ จากสิ่งที่ฉันเข้าใจแคชคือไฟล์ที่เข้ารหัสของไฟล์ที่คล้ายกัน เราจะทำอย่างไรกับ__pycache__โฟลเดอร์? มันเป็นสิ่งที่เราให้กับผู้คนแทนที่จะเป็นซอร์สโค้ดของเราหรือไม่ มันเป็นเพียงข้อมูลอินพุตของฉันหรือไม่ โฟลเดอร์นี้ยังคงถูกสร้างขึ้นมาเพื่ออะไร

9
TypeError: จำเป็นต้องมีวัตถุคล้ายไบต์ไม่ใช่ 'str' เมื่อเขียนไปยังไฟล์ใน Python3
ฉันเพิ่งย้ายไป Py 3.5 รหัสนี้ทำงานอย่างถูกต้องใน Python 2.7: with open(fname, 'rb') as f: lines = [x.strip() for x in f.readlines()] for line in lines: tmp = line.strip().lower() if 'some-pattern' in tmp: continue # ... code หลังจากอัปเกรดเป็น 3.5 ฉันได้รับ: TypeError: a bytes-like object is required, not 'str' ข้อผิดพลาดในบรรทัดสุดท้าย (รหัสการค้นหารูปแบบ) ฉันได้ลองใช้.decode()ฟังก์ชั่นทั้งสองข้างของคำสั่งแล้วลอง: if tmp.find('some-pattern') != …
590 python  python-3.x  string  file  byte 

20
ขอให้ผู้ใช้ป้อนข้อมูลจนกว่าพวกเขาจะให้การตอบสนองที่ถูกต้อง
Наэтотвопросестьответына กองมากเกินнарусском : Каквыполнитьнесколькопровероквведенныхпользователемданных? ฉันกำลังเขียนโปรแกรมที่รับอินพุตจากผู้ใช้ #note: Python 2.7 users should use `raw_input`, the equivalent of 3.X's `input` age = int(input("Please enter your age: ")) if age >= 18: print("You are able to vote in the United States!") else: print("You are not able to vote in the United States.") โปรแกรมทำงานได้ตามที่คาดหวังตราบใดที่ผู้ใช้ป้อนข้อมูลที่มีความหมาย C:\Python\Projects> …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.