คำถามติดแท็ก python

Python เป็นภาษาการเขียนโปรแกรมแบบหลายกระบวนทัศน์แบบไดนามิกพิมพ์อเนกประสงค์ มันถูกออกแบบมาให้เรียนรู้เข้าใจและใช้งานได้อย่างรวดเร็วและบังคับใช้ไวยากรณ์ที่สะอาดและสม่ำเสมอ โปรดทราบว่า Python 2 สนับสนุนอย่างเป็นทางการตั้งแต่วันที่ 01-01-2020 สำหรับคำถาม Python เฉพาะรุ่นให้เพิ่มแท็ก [python-2.7] หรือ [python-3.x] เมื่อใช้ตัวแปรหรือไลบรารี Python (เช่น Jython, PyPy, Pandas, Numpy) โปรดรวมไว้ในแท็ก


5
พารามิเตอร์ URL และตรรกะในมุมมองตามคลาส Django (TemplateView)
ฉันไม่ชัดเจนว่าวิธีที่ดีที่สุดในการเข้าถึงพารามิเตอร์ URL ในมุมมองตามคลาสใน Django 1.5 พิจารณาสิ่งต่อไปนี้: ดู: from django.views.generic.base import TemplateView class Yearly(TemplateView): template_name = "calendars/yearly.html" current_year = datetime.datetime.now().year current_month = datetime.datetime.now().month def get_context_data(self, **kwargs): context = super(Yearly, self).get_context_data(**kwargs) context['current_year'] = self.current_year context['current_month'] = self.current_month return context URLCONF: from .views import Yearly urlpatterns = patterns('', url( regex=r'^(?P<year>\d+)/$', view=Yearly.as_view(), name='yearly-view' ), …

1
มีความเร็วในการวิเคราะห์หรือข้อได้เปรียบในการใช้หน่วยความจำในการใช้ HDF5 สำหรับการจัดเก็บอาร์เรย์ขนาดใหญ่ (แทนที่จะเป็นไฟล์ไบนารีแบบแบน) หรือไม่
ฉันกำลังประมวลผลอาร์เรย์ 3 มิติขนาดใหญ่ซึ่งฉันมักจะต้องแบ่งส่วนด้วยวิธีต่างๆเพื่อทำการวิเคราะห์ข้อมูลที่หลากหลาย "คิวบ์" ทั่วไปสามารถมีขนาด ~ 100GB (และมีแนวโน้มที่จะใหญ่ขึ้นในอนาคต) ดูเหมือนว่ารูปแบบไฟล์ที่แนะนำโดยทั่วไปสำหรับชุดข้อมูลขนาดใหญ่ใน python คือการใช้ HDF5 (h5py หรือ pytables) คำถามของฉันคือความเร็วหรือประโยชน์ในการใช้หน่วยความจำในการใช้ HDF5 เพื่อจัดเก็บและวิเคราะห์คิวบ์เหล่านี้ผ่านการจัดเก็บไว้ในไฟล์ไบนารีแบบแบนธรรมดาหรือไม่ HDF5 เหมาะสมกว่าสำหรับข้อมูลแบบตารางเมื่อเทียบกับอาร์เรย์ขนาดใหญ่เช่นที่ฉันกำลังทำงานอยู่หรือไม่ ฉันเห็นว่า HDF5 สามารถบีบอัดข้อมูลได้ดี แต่ฉันสนใจเรื่องความเร็วในการประมวลผลและจัดการกับหน่วยความจำล้นมากกว่า ฉันมักต้องการวิเคราะห์เพียงชุดย่อยขนาดใหญ่เพียงชุดเดียว ข้อเสียเปรียบอย่างหนึ่งของทั้ง pytables และ h5py คือเมื่อฉันใช้อาร์เรย์ส่วนหนึ่งฉันมักจะได้อาร์เรย์ที่เป็นตัวเลขกลับมาโดยใช้หน่วยความจำหมด อย่างไรก็ตามหากฉันหั่น memmap ที่เป็นตัวเลขของไฟล์ไบนารีแบบแบนฉันจะได้รับมุมมองซึ่งเก็บข้อมูลไว้ในดิสก์ ดังนั้นดูเหมือนว่าฉันสามารถวิเคราะห์ส่วนที่เฉพาะเจาะจงของข้อมูลได้ง่ายขึ้นโดยไม่ต้องใช้หน่วยความจำมากเกินไป ฉันได้สำรวจทั้ง pytables และ h5py แล้วและยังไม่เห็นประโยชน์จากจุดประสงค์ของฉัน
97 python  numpy  hdf5  pytables  h5py 

2
ดัชนีหลายคอลัมน์เมื่อใช้ส่วนขยาย ORM ที่เปิดเผยของ sqlalchemy
ตามเอกสารประกอบและข้อคิดเห็นในsqlalchemy.Columnคลาสเราควรใช้คลาสsqlalchemy.schema.Indexเพื่อระบุดัชนีที่มีหลายคอลัมน์ อย่างไรก็ตามตัวอย่างแสดงวิธีการทำโดยใช้วัตถุตารางโดยตรงดังนี้: meta = MetaData() mytable = Table('mytable', meta, # an indexed column, with index "ix_mytable_col1" Column('col1', Integer, index=True), # a uniquely indexed column with index "ix_mytable_col2" Column('col2', Integer, index=True, unique=True), Column('col3', Integer), Column('col4', Integer), Column('col5', Integer), Column('col6', Integer), ) # place an index on col3, col4 Index('idx_col34', mytable.c.col3, mytable.c.col4) …

8
python3 ที่ดีเทียบเท่ากับการแกะกล่องอัตโนมัติในแลมบ์ดาคืออะไร?
พิจารณารหัส python2 ต่อไปนี้ In [5]: points = [ (1,2), (2,3)] In [6]: min(points, key=lambda (x, y): (x*x + y*y)) Out[6]: (1, 2) สิ่งนี้ไม่รองรับใน python3 และฉันต้องทำสิ่งต่อไปนี้: >>> min(points, key=lambda p: p[0]*p[0] + p[1]*p[1]) (1, 2) นี่มันน่าเกลียดมาก ถ้าแลมด้าเป็นฟังก์ชันฉันทำได้ def some_name_to_think_of(p): x, y = p return x*x + y*y การลบคุณสมบัตินี้ใน python3 บังคับให้โค้ดทำในแบบที่น่าเกลียด (ด้วยดัชนีวิเศษ) …

4
วิธีรับข้อความยกเว้นใน Python อย่างถูกต้อง
วิธีใดเป็นวิธีที่ดีที่สุดในการรับข้อความยกเว้นจากส่วนประกอบของไลบรารีมาตรฐานใน Python ฉันสังเกตเห็นว่าในบางกรณีคุณสามารถรับได้จากmessageฟิลด์เช่นนี้: try: pass except Exception as ex: print(ex.message) แต่ในบางกรณี (ตัวอย่างเช่นในกรณีของข้อผิดพลาดของซ็อกเก็ต) คุณต้องทำสิ่งนี้: try: pass except socket.error as ex: print(ex) ฉันสงสัยว่ามีวิธีมาตรฐานใดบ้างที่จะครอบคลุมสถานการณ์เหล่านี้ส่วนใหญ่

11
Python vs Bash - งานประเภทใดที่แต่ละงานมีประสิทธิภาพเหนือกว่าประสิทธิภาพอื่น ๆ ? [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ เห็นได้ชัดว่า Python เป็นมิตรกับผู้ใช้มากกว่าการค้นหาอย่างรวดเร็วใน Google จะแสดงผลลัพธ์มากมายที่กล่าวว่าเนื่องจาก Python มีการคอมไพล์ไบต์มักจะเร็วกว่า ฉันพบสิ่งนี้ที่อ้างว่าคุณสามารถเห็นการปรับปรุงมากกว่า 2000% ในการดำเนินการตามพจนานุกรม คุณมีประสบการณ์อย่างไรในเรื่องนี้? แต่ละคนเป็นผู้ชนะที่ชัดเจนในงานประเภทใด

6
จะหมดอายุเซสชั่นเนื่องจากไม่มีการใช้งานใน Django ได้อย่างไร?
แอปพลิเคชัน Django ของเรามีข้อกำหนดการจัดการเซสชันดังต่อไปนี้ เซสชันจะหมดอายุเมื่อผู้ใช้ปิดเบราว์เซอร์ เซสชันจะหมดอายุหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง ตรวจจับเมื่อเซสชันหมดอายุเนื่องจากไม่มีการใช้งานและแสดงข้อความที่เหมาะสมแก่ผู้ใช้ เตือนผู้ใช้ว่าเซสชันที่กำลังจะมาถึงจะหมดอายุภายในไม่กี่นาทีก่อนสิ้นสุดช่วงเวลาที่ไม่มีการใช้งาน นอกจากคำเตือนแล้วให้ผู้ใช้มีตัวเลือกในการขยายเซสชัน หากผู้ใช้ทำงานในกิจกรรมทางธุรกิจที่ยาวนานภายในแอปที่ไม่เกี่ยวข้องกับคำขอที่ส่งไปยังเซิร์ฟเวอร์เซสชันจะต้องไม่หมดเวลา หลังจากอ่านเอกสารโค้ด Django และบล็อกโพสต์บางส่วนที่เกี่ยวข้องกับเรื่องนี้ฉันได้คิดแนวทางการใช้งานต่อไปนี้ ข้อกำหนด 1 ข้อกำหนดนี้สามารถนำไปใช้ได้อย่างง่ายดายโดยตั้งค่า SESSION_EXPIRE_AT_BROWSER_CLOSE เป็น True ข้อกำหนด 2 ฉันได้เห็นคำแนะนำบางประการในการใช้ SESSION_COOKIE_AGE เพื่อกำหนดระยะเวลาหมดอายุของเซสชัน แต่วิธีนี้มีปัญหาดังต่อไปนี้ เซสชันจะหมดอายุเมื่อสิ้นสุด SESSION_COOKIE_AGE เสมอแม้ว่าผู้ใช้จะใช้งานแอปพลิเคชันอยู่ก็ตาม (สามารถป้องกันได้โดยตั้งค่าการหมดอายุของเซสชันเป็น SESSION_COOKIE_AGE ในทุกคำขอโดยใช้มิดเดิลแวร์ที่กำหนดเองหรือโดยการบันทึกเซสชันในทุกคำขอโดยตั้งค่า SESSION_SAVE_EVERY_REQUEST เป็นจริง แต่ปัญหาถัดไปไม่สามารถหลีกเลี่ยงได้เนื่องจากการใช้ SESSION_COOKIE_AGE) เนื่องจากวิธีการทำงานของคุกกี้ SESSION_EXPIRE_AT_BROWSER_CLOSE และ SESSION_COOKIE_AGE จึงไม่สามารถใช้ร่วมกันได้กล่าวคือคุกกี้จะหมดอายุเมื่อปิดเบราว์เซอร์หรือเมื่อถึงเวลาหมดอายุที่กำหนด หากใช้ SESSION_COOKIE_AGE และผู้ใช้ปิดเบราว์เซอร์ก่อนที่คุกกี้จะหมดอายุคุกกี้จะยังคงอยู่และการเปิดเบราว์เซอร์อีกครั้งจะอนุญาตให้ผู้ใช้ (หรือบุคคลอื่น) เข้าสู่ระบบโดยไม่ต้องตรวจสอบสิทธิ์อีกครั้ง Django อาศัยเฉพาะคุกกี้ที่มีอยู่เพื่อตรวจสอบว่าเซสชันนั้นทำงานอยู่หรือไม่ ไม่ได้ตรวจสอบวันหมดอายุของเซสชันที่เก็บไว้กับเซสชัน สามารถใช้วิธีการต่อไปนี้เพื่อดำเนินการตามข้อกำหนดนี้และเพื่อแก้ไขปัญหาที่กล่าวถึงข้างต้น อย่าตั้งค่า SESSION_COOKIE_AGE …

6
ฉันจะใช้คีย์ vi ใน ipython ภายใต้ * nix ได้อย่างไร
ขณะนี้อยู่ใน Bash ฉันใช้set -o viเพื่อเปิดใช้งานโหมด vi ใน bash prompt ของฉัน ฉันจะทำสิ่งนี้ใน ipython ได้อย่างไร หมายเหตุ:หากคำตอบใช้ได้กับ * nix ทั้งหมดฉันจะลบ OS X ออกจากชื่อเรื่อง :)
97 python  bash  vi  ipython  readline 

12
การเชื่อมต่อกับเซิร์ฟเวอร์ Microsoft SQL โดยใช้ Python
ฉันกำลังพยายามเชื่อมต่อกับ SQL ผ่าน python เพื่อเรียกใช้แบบสอบถามบนฐานข้อมูล SQL บางตัวบนเซิร์ฟเวอร์ Microsoft SQL จากการค้นคว้าของฉันทางออนไลน์และในฟอรัมนี้ห้องสมุดที่มีแนวโน้มมากที่สุดน่าจะเป็น pyodbc ดังนั้นฉันจึงได้สร้างรหัสต่อไปนี้ import pyodbc conn = pyodbc.connect(init_string="driver={SQLOLEDB}; server=+ServerName+; database=+MSQLDatabase+; trusted_connection=true") cursor = conn.cursor() และรับข้อผิดพลาดต่อไปนี้ Traceback (most recent call last): File "C:\Users...\scrap.py", line 3, in <module> conn = pyodbc.connect(init_string="driver={SQLOLEDB}; server=+ServerName+; database=+MSQLDatabase+; trusted_connection=true") pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name …
97 python  sql  windows 

5
อะไรคือความแตกต่างระหว่าง NaN และ None?
ฉันกำลังอ่านสองคอลัมน์ของไฟล์ csv โดยใช้แพนด้าreadcsv()จากนั้นกำหนดค่าให้กับพจนานุกรม คอลัมน์ประกอบด้วยสตริงของตัวเลขและตัวอักษร ในบางครั้งมีกรณีที่เซลล์ว่างเปล่า ในความคิดของฉันค่าที่อ่านในรายการพจนานุกรมนั้นควรเป็นNoneแต่nanจะถูกกำหนดให้แทน แน่นอนว่าNoneมีความหมายมากกว่าเซลล์ว่างเนื่องจากมีค่า null ในขณะที่nanบอกว่าค่าที่อ่านไม่ใช่ตัวเลข ความเข้าใจของฉันถูกต้องหรือไม่อะไรคือความแตกต่างระหว่างNoneและnan? ทำไมจึงnanได้รับมอบหมายแทนNone? นอกจากนี้พจนานุกรมของฉันตรวจสอบเซลล์ว่างที่ใช้อยู่numpy.isnan(): for k, v in my_dict.iteritems(): if np.isnan(v): แต่นี่ทำให้ฉันมีข้อผิดพลาดที่บอกว่าฉันไม่สามารถใช้การตรวจสอบนี้vได้ ฉันเดาว่าเป็นเพราะตัวแปรจำนวนเต็มหรือทศนิยมไม่ใช่สตริงที่ควรใช้ หากเป็นจริงฉันจะตรวจสอบv"เซลล์ว่าง" / nanกรณีได้อย่างไร
97 python  numpy  pandas  nan 

10
คุณสมบัติอ่านอย่างเดียวของ Python
ฉันไม่รู้ว่าแอตทริบิวต์ควรเป็นส่วนตัวเมื่อใดและควรใช้คุณสมบัติหรือไม่ ฉันอ่านเมื่อเร็ว ๆ นี้ว่า setters และ getters ไม่ใช่ pythonic และฉันควรใช้ property decorator ไม่เป็นไร. แต่ถ้าฉันมีแอตทริบิวต์จะต้องไม่ถูกตั้งค่าจากภายนอกชั้นเรียน แต่สามารถอ่านได้ (แอตทริบิวต์แบบอ่านอย่างเดียว) แอตทริบิวต์นี้ควรเป็นแบบส่วนตัวหรือไม่และโดยส่วนตัวฉันหมายถึงด้วยเครื่องหมายขีดล่างเช่นนั้นself._xหรือไม่ ถ้าใช่แล้วจะอ่านโดยไม่ใช้ getter ได้อย่างไร? วิธีเดียวที่ฉันรู้ตอนนี้คือการเขียน @property def x(self): return self._x ด้วยวิธีนี้ฉันสามารถอ่านแอตทริบิวต์ได้obj.xแต่ฉันไม่สามารถตั้งค่าได้obj.x = 1จึงไม่เป็นไร แต่ฉันควรสนใจเกี่ยวกับการตั้งค่าวัตถุที่ไม่ต้องตั้งค่าหรือไม่? บางทีฉันควรจะปล่อยมันไป แต่แล้วอีกครั้งฉันไม่สามารถใช้ขีดล่างได้เนื่องจากการอ่านobj._xเป็นเลขคี่สำหรับผู้ใช้ดังนั้นฉันจึงควรใช้obj.xอีกครั้งผู้ใช้ไม่รู้ว่าเขาต้องไม่ตั้งค่าคุณลักษณะนี้ ความคิดเห็นและการปฏิบัติของคุณคืออะไร?

5
กรองรายการในพจนานุกรม python ที่คีย์มีสตริงเฉพาะ
ฉันเป็น C coder ที่กำลังพัฒนาบางอย่างใน python ฉันรู้วิธีทำสิ่งต่อไปนี้ใน C (และด้วยเหตุนี้ในตรรกะแบบ C จึงใช้กับ python) แต่ฉันสงสัยว่าวิธีการทำ 'Python' คืออะไร ฉันมีพจนานุกรม d และฉันต้องการดำเนินการกับชุดย่อยของรายการเฉพาะผู้ที่มีคีย์ (สตริง) เท่านั้นที่มีสตริงย่อยเฉพาะ กล่าวคือตรรกะ C จะเป็น: for key in d: if filter_string in key: # do something else # do nothing, continue ฉันกำลังจินตนาการว่าเวอร์ชัน python จะเป็นอย่างไร filtered_dict = crazy_python_syntax(d, substring) for key,value in filtered_dict.iteritems(): # …

4
การบันทึก Python ไม่แสดงผลอะไรเลย
ในสคริปต์ python ฉันกำลังเขียนฉันกำลังพยายามบันทึกเหตุการณ์โดยใช้โมดูลการบันทึก ฉันมีรหัสต่อไปนี้เพื่อกำหนดค่าคนตัดไม้ของฉัน: ERROR_FORMAT = "%(levelname)s at %(asctime)s in %(funcName)s in %(filename) at line %(lineno)d: %(message)s" DEBUG_FORMAT = "%(lineno)d in %(filename)s at %(asctime)s: %(message)s" LOG_CONFIG = {'version':1, 'formatters':{'error':{'format':ERROR_FORMAT}, 'debug':{'format':DEBUG_FORMAT}}, 'handlers':{'console':{'class':'logging.StreamHandler', 'formatter':'debug', 'level':logging.DEBUG}, 'file':{'class':'logging.FileHandler', 'filename':'/usr/local/logs/DatabaseUpdate.log', 'formatter':'error', 'level':logging.ERROR}}, 'root':{'handlers':('console', 'file')}} logging.config.dictConfig(LOG_CONFIG) เมื่อฉันพยายามเรียกใช้logging.debug("Some string")ฉันไม่ได้รับเอาต์พุตไปยังคอนโซลแม้ว่าหน้านี้ในเอกสารจะบอกว่าlogging.debugควรมีข้อความ root logger ออกมา เหตุใดโปรแกรมของฉันจึงไม่แสดงผลอะไรเลยและฉันจะแก้ไขได้อย่างไร
97 python  logging 

2
วิธีการสร้างผลลัพธ์ markdown ในสมุดบันทึก Jupyter โดยทางโปรแกรม
ฉันต้องการเขียนรายงานสำหรับชั้นเรียนในสมุดบันทึก Jupyter ฉันต้องการนับบางสิ่งสร้างผลลัพธ์และรวมไว้ใน markdown ฉันสามารถตั้งค่าผลลัพธ์ของเซลล์ให้ตีความเป็น markdown ได้หรือไม่ ฉันต้องการคำสั่งดังกล่าว: print '$\phi$'เพื่อสร้างสัญลักษณ์ phi เช่นเดียวกับใน markdown กล่าวอีกนัยหนึ่งฉันต้องการสร้างเทมเพลตใน markdown และแทรกค่าที่สร้างโดยโปรแกรมที่เขียนในสมุดบันทึก การคำนวณสมุดบันทึกใหม่ควรสร้างผลลัพธ์ใหม่และมาร์กดาวน์ใหม่พร้อมกับแทรกค่าใหม่เหล่านั้น ซอฟต์แวร์นี้เป็นไปได้หรือไม่หรือฉันต้องเปลี่ยนค่าด้วยตัวเอง

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