摘要:函數也稱方法,是用于實現特定功能的一段代碼函數用于提高代碼的復用性函數必須要調用才會執行函數里面定義的變量,為局部變量,局部變量只在函數里面可以使用,出了函數外面之后就不能使用一個函數只做一件事情形參入參傳入一個文件名返回文件內容轉成字典并
函數也稱方法,是用于實現特定功能的一段代碼
函數用于提高代碼的復用性
函數必須要調用才會執行
函數里面定義的變量,為局部變量,局部變量只在函數里面可以使用,出了函數外面之后就不能使用
一個函數只做一件事情
import json def get_file_content(file_name): #形參 #入參:傳入一個文件名 #返回:文件內容轉成字典并返回 with open(file_name, encoding="utf-8") as f: res = json.load(f) return res abc = get_file_content("stus.json") #函數調用才執行,此處傳入實參,函數有返回,需要用變量接收 print(abc)
def write_file(filename,content): with open(filename,"w", encoding="utf-8") as f: #f.write(json.dumps(content)) json.dump(content,f,ensure_ascii=False,indent=4) dict = {"name":"wrp","age":"18"} write_file("wrp.json",dict)
""" 作業: 1、實現一個商品管理的程序。 #輸出1,添加商品 2、刪除商品 3、查看商品 添加商品: 商品的名稱:xxx 商品如果已經存在的話,提示商品商品已經存在 商品的價格:xxxx 數量只能為大于0的整數 商品的數量:xxx,數量只能為大于0的整數 2、刪除商品: 輸入商品名稱: iphone 如果輸入的商品名稱不存在,要提示不存在 3、查看商品信息: 輸入商品名稱: iphone: 價格:xxx 數量是:xxx all: print出所有的商品信息 """ FILENAME = "products.json" import json def get_file_content(): with open(FILENAME, encoding="utf-8") as f: content = f.read() if len(content) > 0: res = json.loads(content) else: res = {} return res def write_file_content(dict): with open(FILENAME,"w",encoding="utf-8") as fw: json.dump(dict, fw, indent=4, ensure_ascii=False) def check_digit(st:str): if st.isdigit(): st = int(st) if st > 0: return st else: return 0 else: return 0 def add_product(): product_name = input("請輸入商品名稱:").strip() count = input("請輸入商品數量:").strip() price = input("請輸入商品價格:").strip() all_products = get_file_content() if check_digit(count) == 0: print("數量輸入不合法") elif check_digit(price) == 0: print("價格輸入不合法") elif product_name in all_products: print("商品已經存在") else: all_products[product_name] = {"count":int(count),"price":int(price)} write_file_content(all_products) print("添加成功") def del_product(): product_name = input("請輸入要刪除的商品名稱:").strip() all_products = get_file_content() if product_name in all_products: all_products.pop(product_name) print("刪除成功") write_file_content(all_products) else: print("商品不存在") def show_product(): product_name = input("請輸入要查詢的商品名稱:").strip() all_products = get_file_content() if product_name == "all": print(all_products) elif product_name not in all_products: print("商品不存在") else: print(all_products.get(product_name))拷貝
淺拷貝,內存地址不變,把兩個對象指向同一份內容,
深拷貝,會重新在內存中生成相同內容的變量
l = [1,1,1,2,3,4,5] l2 = l #淺拷貝 #l2 = l.copy() #淺拷貝 for i in l2: if i % 2 != 0: l.remove(i) print(l) #在此程序中,如果對同一個list進行遍歷并刪除,會發現結果和預期不一致,結果為[1,2,4],使用深拷貝就沒問題
import copy l = [1,1,1,2,3,4,5] l2 = copy.deepcopy(l) # 深拷貝 for i in l2: if i % 2 != 0: l.remove(i) print(l)
非空即真,非零即真
name = input("請輸入名稱:").strip() name = int(name) #輸入0時為假 if name: print("輸入正確") else: print("name不能為空")默認參數
import json def op_file_tojson(filename, dict=None): if dict: #如果dict傳參,將json寫入文件 with open(filename,"w",encoding="utf-8") as fw: json.dump(dict,fw) else: #如果沒傳參,將json從文件讀出 f = open(filename, encoding="utf-8") content = f.read() if content: res = json.loads(content) else: res ={} f.close() return res
校驗小數類型
def check_float(s): s = str(s) if s.count(".") == 1: s_split = s.split(".") left, right = s_split if left.isdigit() and right.isdigit(): return True elif left.startswith("-") and left[1:].isdigit and right.isdigit(): return True else: return False else: return False print(check_float("1.1"))全局變量
def te(): global a a = 5 def te1(): c = a + 5 return c res = te1() print(res) #代碼會報錯,te()中定義的a在函數沒被調用前不能使用
money = 500 def t(consume): return money - consume def t1(money): return t(money) + money money = t1(money) print(money) #結果為500
name = "wangcai" def get_name(): global name name = "hailong" print("1,函數里面的name", name) def get_name2(): print("2,get_name2", name) get_name2() #wangcai get_name() #hailong print("3,函數外面的name", name) #hailong遞歸
遞歸的意思是函數自己調用自己
遞歸最多遞歸999次
def te1(): num = int(input("please enter a number:")) if num%2==0: #判斷輸入的數字是不是偶數 return True #如果是偶數的話,程序就退出,返回True print("不是偶數,請重新輸入") return te1()#如果不是的話繼續調用自己,輸入值 print(te1()) #調用test1參數
位置參數
def db_connect(ip, user, password, db, port): print(ip) print(user) print(password) print(db) print(port) db_connect(user="abc", port=3306, db=1, ip="192.168.1.1", password="abcde") db_connect("192.168.1.1","root", db=2, password="123456", port=123) #db_connect(password="123456", user="abc", 2, "192.168.1.1", 3306) #方式不對,位置參數的必須寫在前面,且一一對應,key=value方式必須寫在后面
可變參數
def my(name, sex="女"): #name,必填參數,位置參數 #sex,默認參數 #可變參數 #關鍵字參數 pass def send_sms(*args): #可變參數,參數組 #1.不是必傳的 #2.把傳入的多個元素放到了元組中 #3.不限制參數個數 #4.用在參數比較多的情況下 for p in args: print(p) send_sms() send_sms(123456) send_sms("123456","45678")
關鍵字參數
def send_sms2(**kwargs): #1.不是必傳 #2.不限制參數個數 #3.key=value格式存儲 print(kwargs) send_sms2() send_sms2(name="xioahei",sex="nan") send_sms2(addr="北京",county="中國",c="abc",f="kkk")集合
集合,天生可以去重
集合無序,list有序
l = [1,1,2,2,3,3,3] res = set(l) #將list轉為set l = list(res) #set去重后轉為list print(res) print(l) set = {1,2,3} #set格式 jihe = set() #定義一個空的集合 xn=["tan","yang","liu","hei"] zdh=["tan","yang","liu","jun","long"] xn = set(xn) zdh = set(zdh) # res = xn.intersection(zdh) #取交集 # res = xn & zdh #取交集 res = xn.union(zdh) #取并集 res = xn | zdh #取并集 res = xn.difference(zdh) #取差集,在A中有,在B中無的 res = xn - zdh #取差集 res = xn.symmetric_difference(zdh) #對稱差集,取兩個中不重合的數據 res = xn ^ zdh print(res)
import string l1 = set(string.ascii_lowercase) l2 = {"a","b","c"} print(l2.issubset(l1)) #l2是不是l2的子集 print(l2.issuperset(l1)) #l2是不是l2的父集 print(l2.isdisjoint(l1)) #是否有交集,有則Flase,無則True l2.add("s") #添加元素 print(l2) print(l2.pop()) #隨機刪除一個元素 l2.remove("a") #刪除指定元素 for l in l2: print(l)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43682.html
摘要:以下這些項目,你拿來學習學習練練手。當你每個步驟都能做到很優秀的時候,你應該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學習不是一朝一夕的事情,建議多看看一些比較優秀的爬蟲的設計方案,比如說。 (一)如何學習Python 學習Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數據結構、語法...
摘要:本文的分享主要圍繞以下幾個方面能做什么常見應用場景介紹如何學習語法基礎實戰面向對象編程實戰練熟基礎小游戲項目的實現與實戰一能做什么一種編程語言往往可以應用于多方面,有些方面比較常用,有些方面極為常用。比如表示是一個空列表。 摘要:Python語言的教程雖然隨處可見,但是忙于日常業務/學習的你或許:一直想要找個時間學一點,但是又不知道該從何下手?本文將從Python能做什么,如何學習Py...
摘要:通過函數名作為其的參數就能得到相應地幫助信息。類是面向對象編程的核心,它扮演相關數據及邏輯的容器的角色。之后是可選的文檔字符串,靜態成員定義,及方法定義。 Python 源文件通常用.py 擴展名。當源文件被解釋器加載或顯式地進行字節碼編譯的時候會被編譯成字節碼。由于調用解釋器的方式不同,源文件會被編譯成帶有.pyc或.pyo擴展名的文件,你可以在第十二章模塊學到更多的關于擴展名的知識...
摘要:函數的基本結構中的函數基本結構函數名參數列表語句幾點說明函數名的命名規則要符合中的命名要求。在中,將這種依賴關系,稱之為多態。不要期待在原處修改的函數會返回結果比如一定要之用括號調用函數不要在導入和重載中使用擴展名或路徑。 在本教程的開始部分,就已經引入了函數的概念:《永遠強大的函數》,之所以那時候就提到函數,是因為我覺得函數之重要,遠遠超過一般。這里,重回函數,一是復習,二是要在已經...
馬上就要開始啦這次共組織15個組隊學習 涵蓋了AI領域從理論知識到動手實踐的內容 按照下面給出的最完備學習路線分類 難度系數分為低、中、高三檔 可以按照需要參加 - 學習路線 - showImg(https://segmentfault.com/img/remote/1460000019082128); showImg(https://segmentfault.com/img/remote/...
閱讀 1458·2021-11-24 09:39
閱讀 1775·2021-11-22 15:25
閱讀 3728·2021-11-19 09:40
閱讀 3283·2021-09-22 15:31
閱讀 1288·2021-07-29 13:49
閱讀 1192·2019-08-26 11:59
閱讀 1308·2019-08-26 11:39
閱讀 919·2019-08-26 11:00