Task8:模块与datetime模块

模块

python的模块类似Java的jar包,将部分功能打包放在一个整体里面,方便降低程序的耦合性,增加程序的可复用性。具体使用import和from来实现。
e.g.

# hello.py
def print_func( par ):
    print ("Hello : ", par)
    return
   
#  test.py 引入 support 模块:
import hello

support.print_func("Runoob")

# Hello :  Runoob
  • if __name__ = '__main__'
    python不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。
    e.g.
    # const.py
    
    PI = 3.14
    def main():
    	print("PI: ", PI)
    
    main()
    # PI: 3.14
    
    # area.py 计算圆的面积
    
    from const import PI
    def calc_round_area(radius):
    	return PI * (radius ** 2)
    
    def main():
    	print("area: ", calc_round_area(2))
    
    main()
    
    # output
    # PI:3.14
    # area: 12.56
    
    但是我们是不希望const.py里面的main函数运行的,因为const.py提供的main函数只是为了测试常量定义。在const.py中添加if __name__ = "__main__"
    # const.py
    PI = 3.14
     def main():
     	print("PI: ", PI)
     if __name__ == "__main__":
     	main()
     
     # PI: 3.14
    
    运行area.py,输出:
    area: 12.56
    因为 __name__是内置变量,可以表示当前模块的名字。
    import const
    
    print(__name__)
    # __main__
    
    print(const.__name__)
    # const
    
    由此我们可知:如果一个 .py 文件(模块)被直接运行时,其__name__值为__main__,即模块名为__main__。

所以,if __name__ == '__main__'的意思是:当 .py 文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当 .py 文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

datetime模块

datetime 是 Python 中处理日期的标准模块,它提供了 4 种对日期和时间进行处理的类:datetime、date、time 和 timedelta。

  • datetime类
    • datetime.now(tz=None) 获取当前的日期时间,输出顺序为:年、月、日、时、分、秒、微秒。
    • datetime.timestamp() 获取以 1970年1月1日为起点记录的秒数。
    • datetime.fromtimestamp(tz=None) 使用 unixtimestamp 创建一个 datetime。
    import datetime
    
    dt = datetime.datetime(year=2020, month=6, day=24, hour=11, minute=22, second=59)
    print(dt) # 2020-06-24 11:22:59
    print(dt.timestamp()) #  1592968979.0
    
    dt = datetime.datetime.fromtimestamp(1592968979.0)
    print(dt)  # 2020-06-24 11:22:59
    print(type(dt))  # <class 'datetime.datetime'>
    
    dt = datetime.datetime.now()
    print(dt)	# 2020-08-07 23:00:30.570155
    print(type(dt))  # <class 'datetime.datetime'>
    
    • datetime.strftime(fmt) 格式化 datetime 对象。
      e.g.
    import datetime
    
    dt = datetime.datetime(year=2020, month=6, day=25, hour=11, minute=51, second=49)	
    s = dt.strftime("'%Y/%m/%d %H:%M:%S")
    print(s)  # '2020/06/25 11:51:49
    
    s = dt.strftime('%d %B, %Y, %A')
    print(s)  # 25 June, 2020, Thursday
    
    练习:
    # 输入
    d1 = datetime.date('2010-09-28')
    # 输出
    'Sep-28,2010'
    
    import datetime
    
    d1 = datetime.date(2010,9,28)
    
    s = d1.strftime("'%b-%d,%Y'")
    print(s)
    
    • datetime.date() Return the date part.
    • datetime.time() Return the time part, with tzinfo None.
    • datetime.year 年
    • datetime.month 月
    • datetime.day 日
    • datetime.hour 小时
    • datetime.minute 分钟
    • datetime.second 秒
    • datetime.isoweekday 星期几
    • parser.parse(timestr, parserinfo=None, **kwargs)
      在处理含有字符串日期的数据集或表格时,我们需要一种自动解析字符串的方法,无论它是什么格式的,都可以将其转化为 datetime 对象。这时,就要使用到 dateutil 中的 parser 模块。
      e.g.
      from dateutil import parser
      s = '2020-06-25'
      dt = parser.parse(s)
      print(dt)  # 2020-06-25 00:00:00
      print(type(dt))  # <class 'datetime.datetime'>
      
      s = 'March 31, 2010, 10:51pm'
      dt = parser.parse(s)
      print(dt)  # 2010-03-31 22:51:00
      print(type(dt))  # <class 'datetime.datetime'>
      
引用中提到,当我们尝试调用一个datetime对象,但这个对象不支持调用操作时,会报出“TypeError: ‘datetime.datetime’ object is not callable”这个错误提示。而引用中给出了一个具体的代码示例,使用了DateTime.ParseExact方法来赋值给变量。但是这段代码并没有解决问题。 如果我们要给datetime.datetime赋值,可以使用datetime模块中的datetime类来创建一个datetime对象,并将需要赋值的日期和时间作为参数传入。例如,可以使用datetime.datetime(2023, 1, 1)来创建一个表示2023年1月1日的datetime对象。这样就可以将这个对象赋值给datetime.datetime变量了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python错误提示:datetime.datetime对象不可调用](https://blog.csdn.net/update7/article/details/129829106)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [Unity 之 切换语言导致报错:System.FormatException:String was not recognized as a valid DateTime.](https://blog.csdn.net/Czhenya/article/details/125991332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值