知识导图:

知识导图:

Python二级考试笔记(四)——高教版-D-R0s1博客
  • 函数的定义:

函数是一段具有特定功能的、可重用的语句组,通过函数名来表示和调用。经过定义,一组语句等价于一个函数,在需要使用这组语句的地方,直接调
用函数名称即可。因此,函数的使用包括两部分:函数的定义和函数
的使用。函数是一种功能抽象。

Python定义一个函数使用def保留字,语法形式如下:

def <函数名> (<参数列表>):

    <函数体>

    return<返回值列表>    #return也是定义函数过程一部分,前面注意缩进

无return函数时只表示执行一段代码功能,无返回值
函数名可以是任何有效的Python标识符,参数列表是调用该函数时传递给它值,可以有零个、一个或多个,当传递多个参数时各参数由逗号分隔,当没有参数时也要保留圆括号。函数体是函数每次被调用时执行的代码,由一行或多行语句组成。

  • 函数的使用

定义后的函数不能直接运行,需要经过“调用”才能运行。调用函数的基本方法如下:

#定义一个对整数n求阶乘的函数

def fact(n):

    s=1

    for i in range(1,n+1):

        s*=i

    return s

#调用整数阶乘的函数

print(fact(n))

具体来说,函数的使用一般分为四个步骤:
1.函数的定义
2.函数的调用
3.函数的执行
4.函数的返回

函数定义:
使用def保留字将一段代码定义为函数,需要确定函数的名字、参数的名字、参数的个数,使用参数名称作为形式参数(占位符)编写函数内部的功能代码。

函数的调用:
通过函数名调用函数功能,对函数的各个参数赋予实际值,实际值可以是实际数据,也可以是在调用函数前已经定义过的变量。

函数的执行:
函数被调用后,使用实际参数(赋予形式参 数的实际值)参与函数内部代码的运行,如果有结果则进行输出。 

函数的返回:
函数执行结束后,根据return保留字的指示决定是否返回结果,如果返回结果,则结果将被放置到函数被调用的位置,函数使用完毕,程序继续运行。

  • 函数的参数传递:

可选参数传递
函数的参数在定义时可以指定默认值,当函数被调用时,如果没有传入对应的参数值,则使用函数定义时的默认值替代,函数定义时的语法形式如下:

def<函数名>(<非可选参数列表>,<可选参数>=<默认值>):

        <函数体>

        return<返回值列表>

需要注意,可选参数一般都放置在非可选参数的后面,即定义函数时,先给出所有非可选参数,然后再分别列出每个可选参数及对应的默认值。

def multiply(x,y=10)  #此处y为可选参数,x为非可选参数

print(x*y)

>>>multiply(99)

990

>>>multiply(99,2)

198

参数名称传递:
Python语言同时支持函数按照参数名称方式传递参数,语法形式如下:

<函数名> (<参数名>=<实际值>)

>>>def  mul tiply(x,y=10)

print(x*y)

>>>mul tiply(x=99)

990

>>>multiply (y=2,x=99)

198

函数的返回值:
return语句用来结束函数并将程序返回到函数被调用的位置继续执行。return语句可以出现在函数中的任何部分,同时 可以将0个、1个或多个函数运算的结果返回给函数被调用处的变量。

def  multiply(x;y=10):

    return x*y

s=multiply(99;2)

print(s)

198

函数可以没有return,此时函数并不返回值。当函数使用return返回多个值,可以使用一个变量或多个变量保存结果。

>>>def  multiply (x;Y=10):

       return x*y;x+y

>>>s=multiply(99;2)

>>>print(s)

(198;101)

>>>a;b=multiply(99;2)

>>>print(a)

198

>>>print(b)

101

  • 变量的作用域

根据程序中变量所在的位置和作用范围,变量分为局部变量和全局变量。局部变量仅在函数内部,且作用域也在函数内部,全局变量的作用域跨越多个函数。
局部变量指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不再存在。

>>>def multiply (x,y=10):

          z=x*y  #z是函数内部的局部变量

                return z

>>>s=multiply(99,2)

>>>print(s)

198

>>>print(z)

Nameerror:name's 'z' is not defined

变量z是函数multiple()内部使用的变量,当函数调用后,变量z将不存在。

全局变量指在函数之外定义的变量,在程序执行全过程有效。全部变量在函数内部使用时,需要提前使用保留字global声明,语法形式如下:

globle<全局变量>

>>>n=2    #n是全局变量

>>>def multiply (x,y=10):

       global  n

   return x*y*n  #使用全局变量

>>>s=multiply(99,2)

>>>print(s)

396

上例中,变量n是全局变量,在函数multiply()中使用时需要在函数内部使用global声明,定义后即可使用。
如果木使用保留字global声明,即使名称相同,也不是全局变量。

  • 代码复用

函数是程序的一种基本抽象方式,它将一系列代码组织起来通过命名供其他程序使用。函数封装的直接好处是代码复用,任何其他代码只要输入参数即可调用函数,从而避免相同功能代码在被调用处重复编写。代码复用产生了另一个好处,当更新函数功能时,所有被调用处的功能都被更新。

课后习题:
选择题知识点
***函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为True(X) 有返回值,返回值是一个不确定的数
***当代码中有main函数时,程序将从main开始执行(X) python代码的执行不依赖main函数,python代码从没有缩进的代码开始执行。
***
def func(ls=[]):
ls.append(1)
return ls
a=func() #每次调用函数时,都会执行依次qppend操作。
b=func() #a,b这是调用了两次
print (a,b)
上述代码运行的结果是:
[1,1][1,1]

二、编程

1.实现isNum()函数,参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表,则返回True,否则返回False

def isNum(n):

    n=type(eval(n))

    if n==type(1):

        print("True")

    elif n==type(1.0):

        print("True")

    elif n==type(1+1j):

        print("True")

    else:

        print("False")

isNum(input("请输入一个字符串:"))

2.实现isPrime()参数为整数,要有异常处理。如果整数是质数则返回的是True否则返回的是False。

def isPrint():

    try:

        num=eval(input("请输入一个整数:"))

        if num > 1:

            for i in range(2,num):

                if (num % i) == 0:

                    print(num,"不是质数")

                    break

            else:

                print(num,"是质数")

        else:

            print(num,"不是质数")

    except:

        print("请输入一个整数。")

isPrint()

3.编写一个函数计算传入字符串数字、字母、空格以及其他字符的函数。

def func1(s):

    al_num = 0

    spance_num = 0

    digit_num = 0

    others_num = 0

    for i in s:

        if i.isdigit():    # isdigit 判断有没有数字

            digit_num += 1

        elif i.isspace():   # isspace 判断有没有空格

            spance_num += 1

        elif i.isalpha():    #isalpha 判断有没有字符

            al_num += 1

        else:

            others_num += 1

    return (al_num,spance_num,digit_num,others_num)

r = func1("python123is   ok你好,世界")

print(r)

4.编写一个函数,打印二百以内的所有素数,以空格分割。

import math #导入math库,以便使用里面的一个求平方根的函数

l = [2, 3] #因为range函数上限不能小于下线,所以2,3预先加到素数列表中,直接从5开始(因为知道4不是素数)循环

for i in range(5, 201): #第一层循环,从5到100

    for j in range(2, int(math.sqrt(i))+1): #第二层循环,逐个判断是否有因子

        if i%j == 0: #如果出现整除说明有因子

            break #跳出循环判断下一个

    else: #如果第二层循环结束还没有跳出的话

        l.append(i) #说明是素数,加到列表里

print(" ".join(map(str, l))) #先将列表中的元素变为字符串再用空格连接输出

大神代码了解一下:

print(" ".join("%s" % x for x in range(2,200) if not [y for y in range(2,x) if x % y ==0]))

5.编写一个函数,参数为一个整数n。利用递归获取斐波那契数列中第n个数并返回。

(斐波那契数列.  斐波那契数列形如1,1,2,3,5,8,13,21,等等. 也就是说,下一个值是序列中前两个值之和. 写一个函数,给定N,返回第N个斐波那契数字.例如,第1个斐波那契数字 是1,第6个是8。)

def fibonacci(x):

    fibList = [1,1]

    for i in xrange(2,x+1):

        fibList.append(fibList[i-2] + fibList[i-1])

    return fibList[-1]

num = int(raw_input("Enter a numer:"))

print fibonacci(num)

Python二级考试笔记(四)——高教版-D-R0s1博客
  • 函数的定义:

函数是一段具有特定功能的、可重用的语句组,通过函数名来表示和调用。经过定义,一组语句等价于一个函数,在需要使用这组语句的地方,直接调
用函数名称即可。因此,函数的使用包括两部分:函数的定义和函数
的使用。函数是一种功能抽象。

Python定义一个函数使用def保留字,语法形式如下:

def <函数名> (<参数列表>):

    <函数体>

    return<返回值列表>    #return也是定义函数过程一部分,前面注意缩进

无return函数时只表示执行一段代码功能,无返回值
函数名可以是任何有效的Python标识符,参数列表是调用该函数时传递给它值,可以有零个、一个或多个,当传递多个参数时各参数由逗号分隔,当没有参数时也要保留圆括号。函数体是函数每次被调用时执行的代码,由一行或多行语句组成。

  • 函数的使用

定义后的函数不能直接运行,需要经过“调用”才能运行。调用函数的基本方法如下:

#定义一个对整数n求阶乘的函数

def fact(n):

    s=1

    for i in range(1,n+1):

        s*=i

    return s

#调用整数阶乘的函数

print(fact(n))

具体来说,函数的使用一般分为四个步骤:
1.函数的定义
2.函数的调用
3.函数的执行
4.函数的返回

函数定义:
使用def保留字将一段代码定义为函数,需要确定函数的名字、参数的名字、参数的个数,使用参数名称作为形式参数(占位符)编写函数内部的功能代码。

函数的调用:
通过函数名调用函数功能,对函数的各个参数赋予实际值,实际值可以是实际数据,也可以是在调用函数前已经定义过的变量。

函数的执行:
函数被调用后,使用实际参数(赋予形式参 数的实际值)参与函数内部代码的运行,如果有结果则进行输出。 

函数的返回:
函数执行结束后,根据return保留字的指示决定是否返回结果,如果返回结果,则结果将被放置到函数被调用的位置,函数使用完毕,程序继续运行。

  • 函数的参数传递:

可选参数传递
函数的参数在定义时可以指定默认值,当函数被调用时,如果没有传入对应的参数值,则使用函数定义时的默认值替代,函数定义时的语法形式如下:

def<函数名>(<非可选参数列表>,<可选参数>=<默认值>):

        <函数体>

        return<返回值列表>

需要注意,可选参数一般都放置在非可选参数的后面,即定义函数时,先给出所有非可选参数,然后再分别列出每个可选参数及对应的默认值。

def multiply(x,y=10)  #此处y为可选参数,x为非可选参数

print(x*y)

>>>multiply(99)

990

>>>multiply(99,2)

198

参数名称传递:
Python语言同时支持函数按照参数名称方式传递参数,语法形式如下:

<函数名> (<参数名>=<实际值>)

>>>def  mul tiply(x,y=10)

print(x*y)

>>>mul tiply(x=99)

990

>>>multiply (y=2,x=99)

198

函数的返回值:
return语句用来结束函数并将程序返回到函数被调用的位置继续执行。return语句可以出现在函数中的任何部分,同时 可以将0个、1个或多个函数运算的结果返回给函数被调用处的变量。

def  multiply(x;y=10):

    return x*y

s=multiply(99;2)

print(s)

198

函数可以没有return,此时函数并不返回值。当函数使用return返回多个值,可以使用一个变量或多个变量保存结果。

>>>def  multiply (x;Y=10):

       return x*y;x+y

>>>s=multiply(99;2)

>>>print(s)

(198;101)

>>>a;b=multiply(99;2)

>>>print(a)

198

>>>print(b)

101

  • 变量的作用域

根据程序中变量所在的位置和作用范围,变量分为局部变量和全局变量。局部变量仅在函数内部,且作用域也在函数内部,全局变量的作用域跨越多个函数。
局部变量指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不再存在。

>>>def multiply (x,y=10):

          z=x*y  #z是函数内部的局部变量

                return z

>>>s=multiply(99,2)

>>>print(s)

198

>>>print(z)

Nameerror:name's 'z' is not defined

变量z是函数multiple()内部使用的变量,当函数调用后,变量z将不存在。

全局变量指在函数之外定义的变量,在程序执行全过程有效。全部变量在函数内部使用时,需要提前使用保留字global声明,语法形式如下:

globle<全局变量>

>>>n=2    #n是全局变量

>>>def multiply (x,y=10):

       global  n

   return x*y*n  #使用全局变量

>>>s=multiply(99,2)

>>>print(s)

396

上例中,变量n是全局变量,在函数multiply()中使用时需要在函数内部使用global声明,定义后即可使用。
如果木使用保留字global声明,即使名称相同,也不是全局变量。

  • 代码复用

函数是程序的一种基本抽象方式,它将一系列代码组织起来通过命名供其他程序使用。函数封装的直接好处是代码复用,任何其他代码只要输入参数即可调用函数,从而避免相同功能代码在被调用处重复编写。代码复用产生了另一个好处,当更新函数功能时,所有被调用处的功能都被更新。

课后习题:
选择题知识点
***函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为True(X) 有返回值,返回值是一个不确定的数
***当代码中有main函数时,程序将从main开始执行(X) python代码的执行不依赖main函数,python代码从没有缩进的代码开始执行。
***
def func(ls=[]):
ls.append(1)
return ls
a=func() #每次调用函数时,都会执行依次qppend操作。
b=func() #a,b这是调用了两次
print (a,b)
上述代码运行的结果是:
[1,1][1,1]

二、编程题

1.实现isNum()函数,参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表,则返回True,否则返回False

def isNum(n):

    n=type(eval(n))

    if n==type(1):

        print("True")

    elif n==type(1.0):

        print("True")

    elif n==type(1+1j):

        print("True")

    else:

        print("False")

isNum(input("请输入一个字符串:"))

2.实现isPrime()参数为整数,要有异常处理。如果整数是质数则返回的是True否则返回的是False。

def isPrint():

    try:

        num=eval(input("请输入一个整数:"))

        if num > 1:

            for i in range(2,num):

                if (num % i) == 0:

                    print(num,"不是质数")

                    break

            else:

                print(num,"是质数")

        else:

            print(num,"不是质数")

    except:

        print("请输入一个整数。")

isPrint()

3.编写一个函数计算传入字符串数字、字母、空格以及其他字符的函数。

def func1(s):

    al_num = 0

    spance_num = 0

    digit_num = 0

    others_num = 0

    for i in s:

        if i.isdigit():    # isdigit 判断有没有数字

            digit_num += 1

        elif i.isspace():   # isspace 判断有没有空格

            spance_num += 1

        elif i.isalpha():    #isalpha 判断有没有字符

            al_num += 1

        else:

            others_num += 1

    return (al_num,spance_num,digit_num,others_num)

r = func1("python123is   ok你好,世界")

print(r)

4.编写一个函数,打印二百以内的所有素数,以空格分割。

import math #导入math库,以便使用里面的一个求平方根的函数

l = [2, 3] #因为range函数上限不能小于下线,所以2,3预先加到素数列表中,直接从5开始(因为知道4不是素数)循环

for i in range(5, 201): #第一层循环,从5到100

    for j in range(2, int(math.sqrt(i))+1): #第二层循环,逐个判断是否有因子

        if i%j == 0: #如果出现整除说明有因子

            break #跳出循环判断下一个

    else: #如果第二层循环结束还没有跳出的话

        l.append(i) #说明是素数,加到列表里

print(" ".join(map(str, l))) #先将列表中的元素变为字符串再用空格连接输出

大神代码了解一下:

print(" ".join("%s" % x for x in range(2,200) if not [y for y in range(2,x) if x % y ==0]))

5.编写一个函数,参数为一个整数n。利用递归获取斐波那契数列中第n个数并返回。

(斐波那契数列.  斐波那契数列形如1,1,2,3,5,8,13,21,等等. 也就是说,下一个值是序列中前两个值之和. 写一个函数,给定N,返回第N个斐波那契数字.例如,第1个斐波那契数字 是1,第6个是8。)

def fibonacci(x):

    fibList = [1,1]

    for i in xrange(2,x+1):

                   fibList.append(fibList[i-2] + fibList[i-1])

    return fibList[-1]

num = int(raw_input("Enter a numer:"))

print fibonacci(num)