ql的python学习之路-day7
函數(shù)與函數(shù)式編程
一.編程模式分為三種:
1.面向?qū)ο缶幊?#xff1a;類----->關(guān)鍵字class
2.面向過程編程:過程----->關(guān)鍵字def,沒有return
3.函數(shù)式編程:函數(shù)----->關(guān)鍵字def,有return返回值(注:函數(shù)式編程與我們學(xué)習(xí)的函數(shù)完全不是一回事)
面向過程編程是沒有返回值的函數(shù)式編程,在python中過程可以看做函數(shù),只是python默認(rèn)過程沒有返回值。
面向過程編程就是把一段段零散的代碼通過def定義成一塊塊代碼,需要調(diào)用的時(shí)候就拿出來(lái)使用。
函數(shù)式編程就是一種抽象程度很高的編程范式,純粹的函數(shù)式編程語(yǔ)言編寫的函數(shù)沒有變量,因此任意一個(gè)函數(shù),只要輸入是確定的,輸出就是確定的
python對(duì)函數(shù)式編程提供部分支持,由于python允許使用變量,所以python不是純粹的函數(shù)式編程語(yǔ)言。
1 #!/user/bin/env python 2 #-*-coding:utf-8 -*- 3 #Author: qinjiaxi 4 #函數(shù) 5 def func1(): 6 """testing1""" 7 print('in the func1') 8 return 0 9 #過程 10 def func2(): 11 """testing2""" 12 print('in the func2') 13 x = func1()#調(diào)用函數(shù) 14 y = func2()#調(diào)用過程 15 print('func1 return: {}'.format(x))#函數(shù)有返回值返回定義函數(shù)時(shí)的0 16 print('func2 return: {}'.format(y))#過程沒有返回值返回None二.為什么要使用函數(shù)
1.避免代碼重復(fù)(避免代碼的重復(fù),把代碼封裝到函數(shù)中,調(diào)用時(shí)只調(diào)用函數(shù))
2.保持一致性(調(diào)用函數(shù)時(shí))
3.可擴(kuò)展容易擴(kuò)展(修改函數(shù)時(shí),其他調(diào)用函數(shù)的地方都跟著變動(dòng))
?三.函數(shù)的返回值
1.返回值個(gè)數(shù)=0,返回None
2.返回值個(gè)數(shù)=1,返回object(本身)
3.返回值個(gè)數(shù)>1,返回tuple(元組)
四.函數(shù)為什么要有返回值
返回整個(gè)函數(shù)的運(yùn)行結(jié)果,根據(jù)返回結(jié)果進(jìn)行后面的操作
五.函數(shù)的參數(shù)
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:qinjiaxi 4 5 #位置參數(shù)和關(guān)鍵字參數(shù) 6 def test(x,y): 7 print(x,y) 8 test(1,2)#1,2是位置參數(shù),按照位置來(lái)傳遞函數(shù)參數(shù),與形參一一對(duì)應(yīng) 9 test(y = 1, x = 2)#此時(shí)y和x是關(guān)鍵字參數(shù),將形參賦值與形參順序無(wú)關(guān) 10 "其中x,y是形參,1、2是實(shí)參" 11 "位置參數(shù)和關(guān)鍵字參數(shù)共同使用的時(shí)候:必須位置參數(shù)放在前面,否則報(bào)錯(cuò)" 12 13 #默認(rèn)參數(shù) 14 def test1(x, y =2): 15 print(x,y) 16 test1(1) 17 "默認(rèn)參數(shù):在定義函數(shù)的時(shí)候給形參賦值" \ 18 "默認(rèn)參數(shù)的特點(diǎn):調(diào)用函數(shù)的時(shí)候,默認(rèn)參數(shù)非必須傳遞,如果傳遞就修改之前的賦值" \ 19 "默認(rèn)參數(shù)的用途:1.提前固定值,默認(rèn)安裝值 2.連接數(shù)據(jù)庫(kù)時(shí)使用默認(rèn)參數(shù)可以固定端口號(hào)" \ 20 21 #參數(shù)組(也叫收集參數(shù)) 22 #傳遞多個(gè)參數(shù) 23 def test2(*args): 24 print(args) 25 test2(1,2,3,4,5)#接受多個(gè)實(shí)參,將參數(shù)傳進(jìn)去得到一個(gè)元組 26 test2(*[1,2,3,4,5])# args = tuple([1,2,3,4,5]) 27 28 def test3(x, *args): 29 print(x) 30 print(args) 31 test3(1,2,3,4,5)#將1傳給1,其他的以元組的形式傳遞給args 32 33 #傳遞多個(gè)字典參數(shù) 34 def test4(**kwargs): 35 print(kwargs) 36 test4(name = 'qinlang', age = 3)#接收關(guān)鍵字參數(shù)變成字典 37 test4(**{'name': 'qinlang', 'age': '3'})#kwargs = dict({'name':'qinlang', 'age':'3'}) 38 "功能:把N個(gè)關(guān)鍵字參數(shù),轉(zhuǎn)換為字典的方式" 39 40 def test5(name,**kwargs): 41 print(name) 42 print(kwargs) 43 test5('秦朗', x = 111 ,y =222, age = 8)#先接受位置參數(shù),然后把關(guān)鍵字參數(shù)變成字典 44 45 def test6(name, age = 3, **kwargs): 46 print(name) 47 print(age) 48 print(kwargs) 49 test6('秦朗',hobby = 'play',age = 3.5)#先接受位置參數(shù),然后接受默認(rèn)參數(shù),最后將關(guān)鍵字參數(shù)變成字典 50 51 "總結(jié):*args接受的是位置參數(shù),如果調(diào)用函數(shù)的時(shí)候不傳遞則返回一個(gè)空元組" 52 " *kwargs接受的是關(guān)鍵字參數(shù),如果調(diào)用函數(shù)的時(shí)候不傳遞則返回一個(gè)空字典" 53 " 默認(rèn)參數(shù)在調(diào)用的時(shí)候可以寫可以不寫,如果寫的話有兩種方式一是在固定位置寫值、二是以關(guān)鍵字參數(shù)傳遞" 54 " 最后強(qiáng)調(diào),位置參數(shù)一定得放在關(guān)鍵字參數(shù)的后面"?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/qinlangsky/p/9459054.html
總結(jié)
以上是生活随笔為你收集整理的ql的python学习之路-day7的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Day13_01_Java中的加解密之B
- 下一篇: 《人机交互技术》第四章 人机交互技术概述