问题一:Python程式,DO_A与 DO_A()这两种写法有何差异?都是呼叫 DO_A函数
问题二:使用PyQt5.QtCore的QTimer。以下的写法,第二种却无法执行?
问题一:Python程式,DO_A与 DO_A()这两种写法有何差异?都是呼叫 DO_A函数
第一种写法:
print(f"Hello")
DO_A
第二种写法:
print(f"Hello")
DO_A()
答:
在 Python 中,DO_A 和 DO_A() 这两种写法有本质上的差异:
第一种写法 DO_A (注意!后面没加上()) :这是指向函数物件的引用。当你这样写时,你并没有执行函数,而是将函数本身作为一个物件来处理。例如,你可以将它传递给其他函数或存储在变数中。
def DO_A():
print("执行 DO_A 函数")
# 将函数引用存储在变数中
func = DO_A
print("Hello")
func() # 执行 DO_A 函数
第二种写法 DO_A():这是实际执行函数的方式。当你这样写时,Python 会立即执行 DO_A 函数并执行其中的代码。
def DO_A():
print("执行 DO_A 函数")
print("Hello")
DO_A() # 执行 DO_A 函数
在你的例子中:
print(f"Hello")
DO_A # 注意!后面没加上()
这样写并不会执行 DO_A 函数,只是引用了它。
问题二:使用PyQt5.QtCore的QTimer。以下的写法,第二种却无法执行?
第一种写法,成功运作 QTimer.singleShot(1100, self.DO_A) # 注意!后面没加上()
第二种写法,QTimer.singleShot(1100, self.DO_A()) 卡住不动,无法运行。
答:
第一种写法:QTimer.singleShot(1100, self.DO_A) 将 self.rDO_A 函数的引用传递给 QTimer.singleShot。这意味着计时器在 1100 毫秒后会执行 self.DO_A 函数。
第二种写法:QTimer.singleShot(1100, self.DO_A()) 则是立即执行 self.DO_A函数,并将其 传回值传递给 QTimer.singleShot。
如果 self.DO_A 函数没有传回值(即返回 None),这样的写法会导致 QTimer.singleShot 接收到 None,而不是函数引用,从而导致程式卡住。
** 错误原因:这个 DO_A函数没有传回值,所以后面不要加上 ()
我将思想传授他人, 他人之所得,亦无损于我之所有;
犹如一人以我的烛火点烛,光亮与他同在,我却不因此身处黑暗。----Thomas Jefferson
线上课程教学,远距教学 (Web Form 约 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
线上课程教学,远距教学 (ASP.NET MVC 约 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
写信给我,不要私讯 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小时 / .NET 4.x版)免费试听。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小时 / .NET Core 6.0~8.0)免费试听。影片 https://youtu.be/TSmwpT-Bx4I
[学员感言] mis2000lab课程评价 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET远距教学、线上课程(Web Form + MVC)。 第一天课程, "完整" 试听。
......... facebook社团 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 线上教学影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 无法下载,请看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
请看我们的「售后服务」範围(严格认定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 线上教学 ...... 第一天课程 完整内容 "免费"让您评估 / 试听
[远距教学、教学影片] ASP.NET (Web Form) 课程 上线了!MIS2000Lab.主讲 事先录好的影片,并非上课侧录! 观看时,有如「一对一」面对面讲课。