一阶段day9-02函数

2018-10-10  本文已影响0人  ATM_shark

一、函数

1、函数定义

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
分类:自定义函数(程序员自己声明实现其功能)和内置函数(系统已经声明实现完成)

2、函数语法

def 函数名(参数列表):
函数体

说明:
a、def——》Python中声明函数的关键字;
b、函数名——》标识符,要求同变量名,不能是关键字;
遵守PEP8命名规范(所有字母小写,单词之间下划线隔开)
见名知义(看见名字知道函数的功能)
c、()——》固定格式
d、参数列表——》形参列表;参数名1,参数名2,.....(逗号隔开)
可以有多个参数,亦可以没有;
参数是用来从函数的外部给函数里面传值用的;
e:——》固定格式
f:函数体——》实现函数功能的代码段;

3、初学者声明函数的步骤

a、确定函数的功能
b、根据功能确定函数名
c、确定参数:确定参数有无,参数个数(看函数功能需不需要从函数外面传值,需要传几个)
d、实现函数功能
e、确定返回值

写一个函数,打印两个数的和
def sum_me(num1,num2):

    print(num1+num2)

sum_me(11,22)
写一个函数,打印5个hello
def hello5():

    print("hello"*5,sep='====')

hello5()
打印n个hello
def hello_n(n):

    print("hello"*n,sep='==')

hello_n(3)
练习:写一个函数,计算1+2+3+....n的和
def sum_n(n):

    sum_n=0
    for x in range(1,n+1):
        sum_n += x
    print(sum_n)

sum_n(40)

二、函数调用

'''声明函数的时候,不会执行函数体。函数体只有在函数调用的时候才会执行
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行
语法:函数名(实参列表)
说明:
函数名——》必须是已经声明过的函数
()——》固定的
实参列表——》数据1,数据2,...;实参是用来给形参赋值的'''

函数的调用过程(重点)

第一步:回到函数声明的位置
第二步:用实参给形参赋值(传参,一定要保证每个形参都有一个实参为其赋值)
第三步:执行函数体
第四步:返回返回值(默认None,返回给函数调用表达式)
第五步:回到函数调用的位置(函数表达式),执行之后的代码

三、函数参数

1、位置参数和关键字参数

def func1(a,b,c):
    print('a:',a,'b',b,'c',c)

func1(11,22,33)#位置参数:按照实参的顺序一一给形参赋值
func1(c=99,a=88,b=77)#关键字参数:形参1=实参1,形参2=实参2,形参3=实参3,...

2、默认参数

函数声明的时候可以给参数设置默认值,但是有默认值的参数必须放在没默认值的参数后面
def func1(a,c,b=0):
    print('a:',a,'b',b,'c',c)  #a: 11 b 0 c 22

func1(11,22)#由于形参b有默认值,故可以不写与之对应的实参

3、不定长参数

参数个数不确定的时候,可以在形参前面加*,将这个形参变成一个元祖,用来接收多个参数
如果函数有多个形参,那么不定长参数要放在最后
def func1(*nums):
    print(nums)

func1()
func1(1)
func1(1,3)
func1(1,2,'abc')

def func2(name,*nums):
    print(name,nums)

func2('alice',2,'abc')

四、函数的返回值

函数的返回值就是函数调用表达式的值,就是return关键字后面的表达式的值
Python中所有的函数都有返回值,返回值默认是None
执行函数体没有遇到return,函数的返回值就是None;遇到了return函数的返回值就是return后面的值
函数调用表达式——》调用函数的语句——函数名(实参)
return——》关键字,只能写在函数体中。用来返回返回值和结束函数
情况一:没有遇到return
def hello5():
    print("hello"*5,sep='====')

print(hello5())   #这一步会执行两道命令,第一道是执行函数体,第二步是打印函数体的返回值;
######  故结果是
###### hellohellohellohellohello
###### None
list=['返回值',hello5()]
print(list)  #['返回值', None]
情况二:遇到return
执行函数时,一旦遇到return,函数就直接结束,并且把return后面的结果作为返回值
def x():
    print('===')
    print('!!!')
    return 100
    print('///')
x()
#会打印===,!!!,但不会打印///,因为执行不到这段代码。
print(x())   #返回值100
注意:并不是只要函数体中有return,函数返回值就是return后面的值;要函数体在执行过程中遇到return,才返回return后面的值;
def x():
    n=2
    if n%2:

        return 100
    print('///')
print(x())   #会打印///,返回值为None,并非100,因为没遇上return
如果实现函数的功能会产生新的数据,就将新的数据返回。如果不会产生新的数据就不用返回值
写一个函数,功能是计算一个数的阶乘
def jie_ceng(num):

    sum1 = 1
    for x in range(1, num+1):
        sum1 *= x

    return sum1
re = jie_ceng(10)
print(re)    #3628800
print('===%d===' % re)   #===3628800===
list1 = [re, re]
print(list1)    #[3628800, 3628800]
上一篇 下一篇

猜你喜欢

热点阅读