Day3 - [函数]

1.函数基本语法及特性

  • 函数和过程区分
 1 #函数  有返回值return
 2 def func1():
 3     """testing1"""
 4     print('in the func1')
 5     return 0
 6 
 7 #过程   无返回值
 8 def func2():
 9     '''testing2'''
10     print('in the func2')
11 
12 x=func1()
13 y=func2()
14 
15 print('from func1 return is %s' %x)
16 print('from func2 return is %s' %y)
View Code

 

  •  什么是函数?

定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可

 

  特性:

  1. 减少重复代码
  2. 使程序变的可扩展
  3. 使程序变得易维护

语法定义:

1 #语法
2 def 函数名(参数1,参数2,参数3,...):
3     '''注释'''
4     函数体
5     return 返回的值
6   。。。。。。不管写多少语句都不会执行!!!
7 #函数名要能反映其意

 

1 def hello():#函数名
2     print("Hello, I'm nobody!")
3  
4 hello() #调用函数

 

可以带参数:

 1 #下面这段代码
 2 a,b = 5,8
 3 c = a**b
 4 print(c)
 5  
 6  
 7 #改成用函数写
 8 def calc(x,y):     #x,y为形参
 9     res = x**y
10     return res #返回函数执行结果
11  
12 c = calc(a,b) #结果赋值给c变量 ; a,b为实参,真实存在于内存中的参数;实参和形参必须一一对应。
13 print(c)
  •  函数返回值
无return->None
return 1个值->返回1个值
return 逗号分隔多个值->元组

什么时候该有返回值?

    调用函数,经过一系列的操作,最后要拿到一个明确的结果,则必须要有返回值
    通常有参函数需要有返回值,输入参数,经过计算,得到一个最终的结果
什么时候不需要有返回值?
    调用函数,仅仅只是执行一系列的操作,最后不需要得到什么结果,则无需有返回值
    通常无参函数不需要有返回值

 

  • 参数
  1. 形参和实参

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

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

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

   2.位置参数和关键字(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定

扩展一下,如果位置参数和关键字都存在,那么关键字不能写在位置参数前面。

   3.默认参数

def conn(host,port=3306):
    print(host,port)
    pass

conn("168.1.2.1")
#默认参数特点:调用函数的时候,默认参数非必须传递  port就是默认参数
#用途:1.默认安装值
#     2.数据连接端口

 

   4.参数组

 1 #*args:接受N个位置参数,转换成元组形式
 2 # def test(*args):
 3 #     print(args)
 4 #
 5 # test(1,2,3,4,5,5)
 6 # test(*[1,2,4,5,5])#  args=tuple([1,2,3,4,5])
 7 
 8 # def test1(x,*args):
 9 #     print(x)
10 #     print(args)
11 #
12 # test1(1,2,3,4,5,6,7)
13 
14 
15 #**kwargs:接受N个关键字参数,转换成字典的方式
16 # def test2(**kwargs):
17 #     print(kwargs)
18 #     print(kwargs['name'])
19 #     print(kwargs['age'])
20 #     print(kwargs['sex'])
21 #
22 # test2(name='alex',age=8,sex='F')
23 # test2(**{'name':'alex','age':8})
24 # def test3(name,**kwargs):
25 #     print(name)
26 #     print(kwargs)
27 #
28 # test3('alex',age=18,sex='m')
29 
30 # def test4(name,age=18,**kwargs):
31 #     print(name)
32 #     print(age)
33 #     print(kwargs)
34 #
35 # test4('alex',age=34,sex='m',hobby='tesla')
View Code

 

posted @ 2019-07-23 18:09  斗战圣佛  阅读(120)  评论(0编辑  收藏  举报