日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python全栈工程师能接到私活么_Python全栈工程师(包、模块 的导入)

發布時間:2023/12/10 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python全栈工程师能接到私活么_Python全栈工程师(包、模块 的导入) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ParisGabriel

每天堅持手寫??一天一篇? 決定堅持幾年 為了夢想 為了信仰

Python人工智能從入門到精通

$ pip3 install tensorflow?:

第三方模塊tensorflow 的安裝

電腦必須有網 命令行自動下載安裝

dir(模塊名):

查看模塊所有屬性

自定義模塊導入

示例:

自定義模塊的實現方法

defmyfac(n):print('正在計算', n, '的階乘')defmysum(n):print("正在計算1+2+3+...+%d的和" %n)

name1= "Audi"name2= "TESLA"

print("mymod模塊被加載!")

注意事項:

自定義模塊的文件要求以.py結尾,文件名必須是標識符的規則

導入 語句import 語句等 搜索塊的路徑順序

import mymod

from mymod import myfac

from mymod import *

去哪兒找這個mymod.py?

搜索順序:

1. 搜索程序運行時的路徑(當前路徑)

2. sys.path 提供的路徑? sys.path是一個列表,里面放的都是模塊的搜索路徑

3. 搜索內建模塊

模塊的加載過程:

1. 在模塊導入時,模塊的所有語句都會執行

2. 如果一個模塊已經導入,則再次導入時不會重新執行模塊內的語句

模塊的重新加載

import mymod

import imp

imp.reload(mymod) # 重新加載mymod模塊

模塊以導入和執行的過程:

1. 先搜索相關的路徑,找到模塊名.py

2. 判斷是否有此模塊對應的.pyc文件。如果.pyc比.py文件新,則直接加載.pyc文件

3. 否則 用模塊.py,文件生成.pyc,并加載執行

pyc python的編譯

編譯 解釋執行

mymod.py --------> mymod.pyc --------> python3

模塊??-------->? 編譯好的Python3文件??--------> Python3解釋執行器

模塊的文檔字符串:

模塊內第一個沒有賦值給任何變量的字符串稱為模塊的文檔字符串

模塊的 __doc__ 屬性

此屬性用于綁定模塊的文檔字符串

模塊的__file__屬性

此屬性用于記錄模塊對應的文件路徑名

示例:

# 模塊的文檔字符串:

'''我的自定義模塊mymod2

此模塊有兩個函數

myfac和 mysum

...

'''

defmyfac(n):'''自定義用來測試用的myfac的文檔字符串'''

print('正在計算', n, '的階乘')defmysum(n):print("正在計算1+2+3+...+%d的和" %n)

name1= "Audi"name2= "TESLA"

print("mymod模塊被加載!")

模塊的__name__屬性

__name__屬性 用來記錄模塊自身名字

作用:

1. 記錄模塊名

2. 用來判斷是否為主模塊

說明:

當此模塊為主模塊(也就是第一個運行的模塊時)運行時, __name__綁定 '__main__'

當此模塊不是主模塊時,而是被其它模塊導入時,此時 __name__ 綁定模塊名

示例:

'''此示例示意 mymod3的 __name__屬性的用法'''

deftest():pass

print("__name__屬性綁定的值是:", __name__)if __name__ == '__main__':print("當前mymod3.py 正在以主模塊運行")else:print("當前mymod3.py 正在被其它模塊導入")print("我的模塊名是", __name__)

模塊的 __all__列表

模塊中的 __all__列表是一個用來存放可導出屬性的字符串列表

作用:

當用from xxx import *語句導入時,只導入 __all__ 列表內的屬性? 并且只對 from xx import * 有效

示例:

#__all__屬性只對 from import * 語句有效

__all__ = ['hello1', 'name1']defhello1():pass

defhello2():pass

defhello3():passname1= 'aaaaaa'name2= 'aaaaaa'

模塊的隱藏屬性

模塊中以'_'開頭的屬性,在from xxx import * 導入時,將不被導入,通常稱這些屬性為隱藏屬性

示例:

此模塊在用from mymod5 import *導入時,只能導入:#f1和 name1

deff1():pass

def_f2():pass

def __f3():passname1= 'aaaaa'_name2= 'bbbbb'

隨機模塊 random

模塊名: random

作用:

用于模擬或生成隨機輸出的模塊

隨機模塊 random

說明:

random模塊是用于模擬或生成隨機輸出的模塊.

import random as R

函數名描述

R.random()

返回一個[0, 1) 之間的隨機實數

R.uniform(a,b)

返回[a,b) 區間內的隨機實數

R.randrange([start,] stop[, step])

返回range(start,stop,step)中的隨機數

R.choice(seq)

從序列中返回隨意元素

R.shuffle(seq[, random])

隨機指定序列的順序(亂序序列)

R.sample(seq,n)

從序列中選擇n個隨機且不重復的元素

系統模塊 sys

運行時系統相關的信息

sys模塊的屬性

屬性描述

sys.path

模塊搜索路徑 path[0] 是當前腳本程序的路徑名,否則為 ''

sys.modules

已加載模塊的字典

sys.version

版本信息字符串

sys.version_info

版本信息的命名元組

sys.platform

操作系統平臺名稱信息

sys.argv

命令行參數 argv[0] 代表當前腳本程序路徑名

sys.copyright

獲得Python版權相關的信息

sys.builtin_module_names

獲得Python內建模塊的名稱(字符串元組)

sys模塊的函數

函數名描述

sys.exit([arg])

退出程序,正常退出時sys.exit(0)

sys.getrecursionlimit()

得到遞歸嵌套層次限制(棧的深度)

sys.setrecursionlimit(n)

得到和修改遞歸嵌套層次限制(棧的深度)

包(模塊包) package

包的定義

包是將模塊以文件夾的組織形式進行分組管理的管理方法

作用:

將一系列模塊進行分類管理,有利于防止命名沖突

可以在需要時加載一個或部分模塊則不是全部模塊

包目錄樹示例:

mypack/? (包名)

__init__.py? ? ? ? ? ? ? ? ? ? ? (__init__.py 文件)

menu.py? ? ? ? ? ? ? ? ? ? ? ? ?(模塊)

games/? ? ? ? ? ? ? ? ? ? ? ? ? (子包名1)

__init__.py? ? ? ? ? ? ?(__init__.py 文件)

contra.py? ? ? ? ? ? ? ? (模塊)

supermario.py? ? ? ? (模塊)

tanks.py? ? ? ? ? ? ? ? ? (模塊)

office/? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(子包名2)

__init__.py? ? ? ? ? ? ? (__init__.py 文件)

word.py? ? ? ? ? ? ? ? ? ?(模塊)

excel.py? ? ? ? ? ? ? ? ? ?(模塊)

powerpoint.py? ? ? ? ?(模塊)

__init__.py 文件

__init__.py是常規包內必須存在的文件

__init__.py會在包加載時自動調用

作用:

1. 編寫此包的內容

2. 在內部填寫文檔字符串

3. 在__init__.py文件內可以加載此包所依懶的一些其它模塊

包的導入

同模塊的導入規則

#import 語句

import 包名 [as 包新名]

import 包名.模塊名 [as 模塊新名]

import 包名.子包名.模塊名 [as 模塊新名]

# from import語句

from 包名 import 模塊名 [as 模塊新名]

from 包名.子包名 import 模塊名 [as 模塊新名]

from 包名.子包名.模塊名 import 屬性名 [as 屬性新名]

# from import *語句

from 包名 import *

from 包名.模塊名 import *

...

導入包時的索引路徑順序:

1. 搜索程序的當前路徑

2. sys.path 提供的路徑

__init__.py內的 __all__ 列表

作用:

用來記錄此包中有哪兒些子包或模塊在用from import *語句 時被導入

說明:

__all__列表只對 from xxx import *語句起作用

包的相對導入:

包的相對導入是指包內模塊的相互導入(不能超過包的最高界限)

語法:

from 相對路徑包或模塊 import 屬性或模塊名

from 相對路徑包或模塊 import *

相對路徑

. 代表當前目錄

.. 代表上一級目錄

... 代表上二級目錄

.... 以此類推

注: 相對導入時不能超出包的外部

模塊的導入分三種

import tiem 直接導入模塊

from time import time 導入time模塊的time功能

from mymod import * 導入time模塊的所有功能

這里*導入可以直接使用函數不需要加模塊名.函數 如果有__all__屬性只導入__all__列表里的

包也是分三種 差不多 包所導入的是文件夾

as 給包或者模塊、屬性、等 改名

(.)統一代表什么什么下的什么什么

解釋執行器就是先把.py文件翻譯成二進制碼.pyc文件再進行運行(先解釋后執行)

但運模塊時自動創建__pycache__ 文件夾 里面放.pyc文件 文檔字符串和函數一樣

一般用三引號括起來 寫就可以了 第一行是標題 換行 第三行開始寫詳細內容

__name__屬性返回一個字符串 如果返回 __main__代表程序主入口 也就是第一個運行的模塊

否則返回當前模塊的名字

__all__ 屬性是一個列表 當三種導入方式導入時只導入列表里的其他的不導入

__開頭的函數 屬性 當三種導入方式導入時不導入_開頭的隱藏函數 其他的全導入

__init__.py 是必須存在的文件 不存在 此文件夾就不是包

里面可以寫屬性 包的文檔字符串

導入路徑 優先相對路徑 其次sys.path路徑

相對路徑 就是 當前路徑 或 路徑名加上模塊

path是系統環境變量列表 相當于全局變量 在任何目錄都能調用這個列表里的路徑

練習:

1. 猜數字游戲

隨機生成一個 0~100之間的一個整數,用變量x綁定

讓用戶輸入一個數y,輸出猜數字的結果:

1) 如果y大于x則提示: "您猜大了"

2) 如果y小于x則提示: "您猜小了"

3) 如果y等于生成的數x,則提供示用戶"恭喜您猜對了 "并退出猜數字

循環重復上述步聚,直到猜對為止。

猜對了,顯示用戶猜數字的次數,然后退出程序

答案:

importrandom

x= random.randrange(101)

i=0whileTrue:

s= int(input("請輸入要猜的數字0~100:"))

i+= 1

if s >x:print("大了")elif s

這里有個2分算法 100內的猜數字一般不超過7次猜對 10000不超過20次就能猜對

練習:

1. 寫一個鬧鐘程序,啟動時設置定時時間,

到時間后打印一句"時間到...." 然后退出程序

importtimedeftime_out():

h= int(input("please input:"))

m= int(input("please input:"))

s= int(input("please input:"))

d=(h, m, s)whileTrue:

s=time.localtime()print('%02d:%02d:%02d' % (s[3], s[4], s[5]), end = "\r")

time.gmtime(1)if s[3: 6] >=d:print("Time out")breaktime_out()

2. 模擬斗地主發牌,撲克牌共54張

黑桃('\u2660'), 梅花('\u2663'), 方塊('\u2665'), 紅桃('\u2666')

A2-10JQK

大王、小王

三個人玩,每人發17張牌,底牌留三張

輸入回車, 打印出第1個人的17張牌

輸入回車, 打印出第2個人的17張牌

輸入回車, 打印出第3個人的17張牌

輸入回車, 打印三張底牌

答案:

importrandom

L= {"大王", "小王"}

range(2, 11)for x in {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}:

L.add("\u2660" +x)

L.add("\u2663" +x)

L.add("\u2665" +x)

L.add("\u2666" +x)print("共54張牌:", L)print()for x in range(3):

input()

s= set(random.sample(L, 17))if x ==0:

x= "第一個玩家:"

elif x == 1:

x= "第二玩家:"

elif x == 2:

x= "第三個玩家:"

print(x, s)

L-=sprint()print("底牌:", L)

今天的:

3. 修改學生信息管理程序,將原student_info.py 拆分為模塊

要求:

1. 主事件循環放在main.py中

2. show_menu 函數放在menu.py中

3. 與學生操作相關的函數放在 student_info.py中

還有昨天的:

3. 改寫之前的學生信息管理程序

要求添加四個功能:

| 5) 按學生成績高-低顯示學生信息 |

| 6) 按學生成績低-高顯示學生信息 |

| 7) 按學生年齡高-低顯示學生信息 |

| 8) 按學生年齡低-高顯示學生信息 |

已 吐血身亡 下次補上 太晚了? 嚶嚶嚶.........

#創建輸入函數:input_student開始     封裝信息輸入

#創建輸出函數:student完成 臨時菜單封裝

defstudent():for a in range(1, 8, 2):

x= "*" *aprint(x.center(9), x.center(10), x.center(10), x.center(9))else:for y in range(1, 4 + 1):

c= "*"

if 4 >= 10:

c= "***"

print(c.center(9), c.center(10), c.center(10), c.center(9))print("^^^^^^^^^^^^^ System menu ^^^^^^^^^^^^^")print("---------------------------------------")print("1): Add Student information")print("---------------------------------------")print("2): print Student information")print("---------------------------------------")print("3): delete Student information")print("---------------------------------------")print("4): revamp Student information")print("---------------------------------------")print("5): Results sorting High --> low")print("---------------------------------------")print("6): Results sorting low --> High")print("---------------------------------------")print("7): Age sort High --> low")print("---------------------------------------")print("8): Age sort low --> High")print("---------------------------------------")print("please input number 1~8 select")print("---------------------------------------")print("input :(Q)Exit procedure")print("---------------------------------------")#創建輸出函數:perform完成

definput_student():

L=[]print("--------Student information enty--------")whileTrue:

name= input("please input name:")if name == "":

q= input("operation succeed! return y / n :")if q == "y":break

else:

input_student()

age= int(input("please input age:"))

score= int(input("please input score:"))

d={}

d= {"name": name, "age": age, "score": score}print("+---------------+----------+----------+")

name= d["name"].center(15)

age= str(d["age"]).center(10)

score= str(d["score"]).center(10)print('''|%s|%s|%s|''' %(name, age, score))print("+---------------+----------+----------+")print("-----Not input Enter be no revamp!-----")

L.append(d)returnL#創建輸入函數:input_student完成

#創建輸出函數:output_student開始   封裝列表打印

defoutput_student(lst):print("-------Student information sheet-------")print("+---------------+----------+----------+")print("| Name | Age | Score |")print("+---------------+----------+----------+")for x inlst:

name= x["name"].center(15)

age= str(x["age"]).center(10)

score= str(x["score"]).center(10)print('''|%s|%s|%s|''' %(name, age, score))print("+---------------+----------+----------+")

q= input("operation succeed! return y / n :")if q == "y":pass

else:

output_student()#創建輸出函數:output_student完成

#創建輸出函數:delete_student開始  封裝刪除信息

defdelete_student(lst):

name= input("please input name delete:")for x inlst:if x["name"] ==name:print("+---------------+----------+----------+")

name= x["name"].center(15)

age= str(x["age"]).center(10)

score= str(x["score"]).center(10)print('''|%s|%s|%s|''' %(name, age, score))print("+---------------+----------+----------+")

delet= input("whether delete (y:yes/y:no):")if delet == "y":

lst.remove(x)

q= input("operation succeed! return y / n :")if q == "y":pass

else:

delete_student()#創建輸出函數:delete_student完成

#創建輸出函數:revamp_student()開始   封裝更改信息

defrevamp_student(lst):

name= input("please input name revamp:")for x inlst:if x["name"] ==name:print("+---------------+----------+----------+")

name= x["name"].center(15)

age= str(x["age"]).center(10)

score= str(x["score"]).center(10)print('''|%s|%s|%s|''' %(name, age, score))print("+---------------+----------+----------+")print("-----not input Enter be no revamp!-----")

rage= input("please input age revamp:")

rscore= input("please input score revamp:")if rage != "":

x["age"] =rageif rscore != "":

x["score"] =rscoreprint("+---------------+----------+----------+")

name= x["name"].center(15)

age= str(x["age"]).center(10)

score= str(x["score"]).center(10)print('''|%s|%s|%s|''' %(name, age, score))print("+---------------+----------+----------+")print("-----------revamp perform!------------")

q= input("operation succeed! return y / n :")if q == "y":pass

else:

revamp_student()#創建輸出函數:revamp_student()完成

#創建輸出函數:output_student_by_score_desc開始 成績高~低排序

defoutput_student_by_score_desc(lst):defk(d):return int(d['score'])

L= sorted(lst, key=k, reverse=True)

output_student(L)#創建輸出函數:output_student_by_score_asc開始 成績低~高排序

defoutput_student_by_score_asc(lst):

L= sorted(lst, key=lambda d: int(d['score']))

output_student(L)#創建輸出函數:output_student_by_age_desc開始 年齡高~低排序

defoutput_student_by_age_desc(lst):

L= sorted(lst, key=lambda d: int(d['age']),

reverse=True)

output_student(L)#創建輸出函數:output_student_by_age_asc開始 年齡低~高排序

defoutput_student_by_age_asc(lst):

L= sorted(lst, key=lambda d: int(d['age']))

output_student(L)#創建輸出函數:System_menu()開始    臨時封裝系統

defSystem_menu():

L=[]whileTrue:

student()

select= input("please input:")if select == '1':

L+=input_student()elif select == '2':

output_student(L)elif select == '3':

delete_student(L)elif select == '4':

revamp_student(L)elif select == '5':

output_student_by_score_desc(L)elif select == '6':

output_student_by_score_asc(L)elif select == '7':

output_student_by_age_desc(L)elif select == '8':

output_student_by_age_asc(L)elif select == 'q':break

#創建輸出函數:System_menu()完成    臨時封裝系統

#運行

總結

以上是生活随笔為你收集整理的python全栈工程师能接到私活么_Python全栈工程师(包、模块 的导入)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。