码迷,mamicode.com
首页 > 编程语言 > 详细

Python学习笔记_week3

时间:2017-10-04 15:54:06      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:open   使用   不能   bsp   参数   表示   none   code   数学   

一、介绍

1、面向对象(华山派)--->类(独门秘籍)--->class(定义的关键字)

2、面向过程(少林派)--->过程--->def

3、函数式编程(逍遥派)--->函数--->def

二、函数的定义:

1、初中数学:y=2x+3

2、编程语言中的函数定义:函数是逻辑结构化和过程化的一种编程方法。

技术分享
 1 def test(x):
 2     "The function definitions"
 3     x+=1
 4     return x
 5 def :定义函数的关键字
 6 test:函数名
 7 ():内可定义形参
 8 "":文档描述(非必要,但强烈建议写上)
 9 x+=1:泛指代码块或程序处理逻辑
10 return:定义返回值
define_
技术分享
 1 #函数
 2 def func1():
 3     ‘‘‘testing1‘‘‘
 4     print(in the func1)
 5     return 0
 6 
 7 #过程(没有返回值的函数,但python中隐式的返回None,所以python中区别不大了)
 8 def func2():
 9     ‘‘‘testing2‘‘‘
10     print(in the func2)
11 
12 x=func1()
13 y=func2()
14 print(x,y)
define_test1

当一个函数\过程没有使用return显示的定义返回值时,python解释器会隐式的返回None,所以在python中即便是过程也可以算作函数。

函数式编程:先定义一个数学函数,然后按照这个数学模型用编程语言去实现它。

三、为什么要用函数

没有函数的编程只是在写一个逻辑(功能),想脱离函数,重用逻辑,唯一的方法就是拷贝。

函数的三大优点:

1、代码重用

2、保持一致性

3、可扩展性

技术分享
 1 import time
 2 def logger():
 3     time_format=%Y-%m-%d %X
 4     time_current=time.strftime(time_format)
 5     with open (a.txt,a+) as f:
 6         f.write(%s end action\n%time_current)
 7 
 8 def test1():
 9     print(in the test1)
10     logger()
11 def test2():
12     print(in the test2)
13     logger()
14 def test3():
15     print(in the test3)
16     logger()
17 test1()
18 test2()
19 test3()
func_test2

四、函数返回值

为什么要有返回值:我想要整个函数执行的结果

返回值数=0:返回None

返回值数=1:返回object

返回值>1:返回tuple

技术分享
 1 ‘‘‘def test1():
 2     print(‘in the test1‘)
 3     return 0
 4     # print("test end") # 碰到return,终止程序运行返回0,所以不会被打印
 5 x=test1()
 6 print(x)‘‘‘
 7 
 8 def test1():
 9     print(in the test1)
10 def test2():
11     print(in the test2)
12     return 0
13 def test3():
14     print(in the test3)
15     return 1,hello,[alex,wupeiqi],{name:alex}
16 x=test1()
17 y=test2()
18 z=test3()
19 print(x)
20 print(y)
21 print(z) #放到一个元组里返回
func_test3

五、函数调用

test()执行,()表示调用函数test,()内可以有参数也可以没有

参数:

1、形参和和实参。形参:形式参数,不是实际存在,是虚拟变量。在定义函数和函数体的时候使用形参,目的是在函数调用时接受实参(实参个数,类型应与实参一一对应);

             实参:实际参数,调用函数时传给函数参数,可以是常量、变量、表达式、函数,传给形参。

    区别:形参是虚拟的,不占用内存空间,形参变量只有在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参。

2、位置参数和关键字

3、默认参数。特点:调用函数时候,默认参数非必须传递

        用途:1、默认安装值;2、默认端口号

4、参数组。*args,**kwargs

技术分享
1 def test(x,y):
2     print(x)
3     print(y)
4 test(1,2) #与形参一一对应,位置参数调用
5 test(y=1,x=2) #与形参顺序无关,关键字调用
6 # test(3,x=1) 报错,多个值给x
7 # test(x=2,3)  #报错,关键参数不能写在位置参数之前
func_test4
技术分享
1 def test(x,y=2):
2     print(x)
3     print(y)
4 test(1)  #默认参数,不赋值就是2,赋值就为赋的值
5 
6 def test(x,soft1=True,soft2=True):#默认安装值
7     pass
8 def conn(host,port=3306):#默认端口号
9     pass
func_test5
技术分享
 1 def test(*args):  #接受N个位置参数,转化成元组的形式
 2     print(args)
 3 test(1,2,3,4,5,6)  # 参数组,实参数目不固定,形参用*定义
 4 
 5 test(*[1,2,3,4,5,6]) # args=tuple[1,2,3,4,5,6]
 6 
 7 def test1(x,*args):
 8     print(x)
 9     print(args)
10 test1(1,2,3,4,5,6,7) #与位置参数结合起来
11 
12 def test2(**kwargs):  # **kwrgs,接受n个关键字参数,转换成字典的方式
13     print(kwargs)
14     print(kwargs["name"])
15     print(kwargs["age"])
16     print(kwargs["sex"])
17 test2(name="alex",age=8,sex=F)
18 # test2(**{"name":"alex","age":8})
19 
20 def test3(name,**kwargs):
21     print(name)
22     print(kwargs)
23 test3("alex",age=18,sex=m)
24 
25 def test4(name,age=18,**kwargs): #参数组往后放
26     print(name)
27     print(age)
28     print(kwargs)
29 test4("alex",sex=m,hobby="tesla",age=3)
30 
31 def test5(name,age=18,*args,**kwargs):
32     print(name)
33     print(age)
34     print(args)
35     print(kwargs)
36 test5("alex", age=34,sex=m,hobby="tesla")
func_test6
技术分享
1 def logger(source):
2     print("from %s" % source)
3 def test5(name,age=18,*args,**kwargs):
4     print(name)
5     print(age)
6     print(args)
7     print(kwargs)
8     logger("TEST5")
9 test5("alex", age=34,sex=m,hobby="tesla")
View Code

 

 

 

 

 

Python学习笔记_week3

标签:open   使用   不能   bsp   参数   表示   none   code   数学   

原文地址:http://www.cnblogs.com/jyh-py-blog/p/7625648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!