1.函數(shù)的定義:
#定義函數(shù)的目的,增加代碼的重用性
def multiple_table():
? ? # 定義遍歷row 記錄行號(hào)
? ? row = 1
? ? while row <= 9:
? ? ? ? # 執(zhí)行第 row 行的打印
? ? ? ? start_count = 1
? ? ? ? while start_count <= row:
? ? ? ? ? ? # 內(nèi)層循環(huán)處理具體這一行要打印多少個(gè)星星
? ? ? ? ? ? # \n :換行符? \t:制表符,就是按一下tab鍵的效果,表示空4個(gè)字符
? ? ? ? ? ? print('%d? *? %d = %2d ' % (start_count, row, start_count * row), end='\t')
? ? ? ? ? ? start_count += 1
? ? ? ? # 換行
? ? ? ? print()
? ? ? ? row += 1
# 調(diào)用函數(shù),如果不調(diào)用不會(huì)執(zhí)行
multiple_table()
#函數(shù)調(diào)用必須在函數(shù)定義之后
#在?定義函數(shù)?的下方,使用?連續(xù)的三對引號(hào),給函數(shù)加注釋
在?函數(shù)調(diào)用?print 的位置,按快捷鍵?CTRL + Q?可以查看函數(shù)的說明信息
2.返回值使用return 函數(shù)
def func_sum():
? ? """求和 1+2"""
? ? sum_num = 1 + 2
? ? print(sum_num)
? ? return? #這里空著就顯示None,寫其他值就返回其他值
? ? # 這行代碼不會(huì)執(zhí)行了
? ? print('不會(huì)執(zhí)行這行代碼')
res=func_sum()?
print(res)
多個(gè)return
def is_even_num(num):? ? """判斷奇偶數(shù)"""? ? if num % 2 == 0:
? ? ? ? return True? ? else:
? ? ? ? return Fals
3.模塊的使用
新建 info.py,代碼如下
name = "datafrog"def func():? ?
????print('info_func')
再新建?get_info.py?文件,并且編寫以下代碼:
import info
print(info.name)
info.func()
4.列表推導(dǎo)
a=[x for x in range(1,7) if x%2==0]?
#設(shè)置1-7的偶數(shù)表
print(a)
5.匿名函數(shù) lambda
自己定義函數(shù)
# 定義一個(gè)函數(shù)
def fun(a, b, opt):? ?
print("a = %s" % a)
? ? print("b = %s" % b)
? ? print("result =%s" % opt(a, b))
# 調(diào)用函數(shù)fun(1, 2, lambda x,y:x+y)
輸出結(jié)果:
a = 1 b = 2 result = 3
全局變量 global
a = 10def test():? ?
global a
? ? a = 5? # 修改全局變量? ? print("函數(shù)內(nèi)a:%d" %a)
test()
print("函數(shù)外a:%d" %a)
7.可變參數(shù)
args
函數(shù)可以定義?可變參數(shù),用于接收任意數(shù)量的參數(shù)
可變參數(shù)的前邊需要添加*,用于提示python解釋器該參數(shù)為可變參數(shù)
使用可變參數(shù)直接用args即可(不需要加*)
可變參數(shù)的本質(zhì)是?將傳遞的參數(shù)包裝成了元組
def sum_num(a, b, *args):?
? ? result = a + b
? ? for temp in args:
? ? ? ? result += temp
? ? return result
sum_num(1, 2, 3, .., n)
kwargs
可變參數(shù)還有一種形式?可以接收不存在的關(guān)鍵字參數(shù)
定義參數(shù)時(shí)需要在變量名前添加兩個(gè)*
這種可變參數(shù)會(huì)將?不存在的關(guān)鍵字參數(shù)包裝成字典
def sum_num(a, b, *args, **kwargs):?
? ? print(a)
? ? print(b)
? ? print(args)
? ? print(kwargs)
sum_num(1, 2, 3, .., n, mm=5, nn=6)
8.文件的讀寫

f = open('test.txt', 'w')
#若有文件直接在里面寫,沒有的話創(chuàng)建新文件
f.write('hello world, i am here!')
f.close()
9.制作文件備份
# 提示輸入文件
oldFileName = input("請輸入要拷貝的文件名字:")
# 以讀的方式打開文件
oldFile = open(oldFileName,'rb')
# 提取文件的后綴
fileFlagNum = oldFileName.rfind('.')if fileFlagNum > 0:
? ? fileFlag = oldFileName[fileFlagNum:]
# 組織新的文件名字
newFileName = oldFileName[:fileFlagNum] + '[復(fù)件]' + fileFlag
# 創(chuàng)建新文件
newFile = open(newFileName, 'wb')
# 把舊文件中的數(shù)據(jù),一行一行的進(jìn)行復(fù)制到新文件中
for lineContent in oldFile.readlines():
? ? newFile.write(lineContent)
# 關(guān)閉文件
oldFile.close()
newFile.close()
10.文件和文件夾的操作
10.1. 文件重命名
os模塊中的rename()可以完成對文件的重命名操作
rename(需要修改的文件名, 新的文件名)
? ? import os
? ? os.rename("畢業(yè)論文.txt", "畢業(yè)論文-最終版.txt")
10.2. 刪除文件
os模塊中的remove()可以完成對文件的刪除操作
remove(待刪除的文件名)
? ? import os
? ? os.remove("畢業(yè)論文.txt")
10.3. 創(chuàng)建文件夾
? ? import os
? ? os.mkdir("張三")
10.4. 獲取當(dāng)前目錄
? ? import os
? ? os.getcwd()
10.5. 改變默認(rèn)目錄
? ? import os
? ? os.chdir("test")? # 跳轉(zhuǎn)到當(dāng)前路徑的test子目錄中
10.6. 獲取目錄列表
? ? import os
? ? os.listdir()
10.7. 刪除文件夾
? ? import os
? ? os.rmdir("張三")
目錄非空不能使用,可以使用遞歸的方式進(jìn)行刪除
11.批量修改文件名
import os
path = input("請輸入需要批量修改文件名的文件夾名稱:")
# 跳轉(zhuǎn)路徑os.chdir(path)
# # 獲取當(dāng)前的絕對路徑
# full_path = os.getcwd()
# print(full_path)
# 遍歷目標(biāo)文件夾
for subpath_name in os.listdir():
? ? new_file_name = "【復(fù)件】" + subpath_name
? ? # 每個(gè)文件改名? ?
os.rename(subpath_name, new_file_name)