最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

少儿Python基础(5)Python函数

XAMPP案例 中文小张 1000浏览 0评论

 

可爱的小朋友们,今天我们来学习一下Python函数吧~

01

什么是函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性和代码的重复利用率。

02

定义函数和函数调用

定义函数格式:

def  函数名(参数1,参数2…):

函数体

 

函数调用格式:

函数名()

 

案例:

def MyFirstFunction():    print('我定义的第一个函数')MyFirstFunction()

 

03

函数返回值 return

在函数中使用return关键字可以返回结果

案例:

>>> def add(num1,num2):        return num1+num2>>> add(2,3)5
04

形参和实参

形参是函数定义过程中的参数;实参是传递进来的参数

 

案例:

def MyFunction(name):   print('传递进来的'+name+'叫实参,因为是具体的参数值')MyFunction('小鱼儿')
05

参数:关键字参数、默认参数、可变参数

关键字参数

>>> def Say(name,words):        print(name+'->'+words)>>> Say(name='sky',words='you are the best')sky->you are the best
默认参数

默认参数是赋初始值,如果忘记传一个参数,也不会报错

案例:定义一个带有默认参数的函数,如果没有传入,打印 ‘hello Python’,如果传入,打印 ‘hello xxx’

>>> def greet(name="Pyhton"):     print('hello',name)>>> greet()hello Pyhton>>> greet('php')hello php>>>
可变参数

>>> def test(*params):         print('参数长度是:',len(params));         print('第二个参数是:',params[1]);>>> test(1,'sky',3.14,4,5.6)参数长度是: 5第二个参数是: sky
注意:若可变参数后面有别的参数,需要赋值

>>> def test(*params,exp):         print('参数长度是:',len(params));         print('第二个参数是:',params[1]);

>>> test(1,2,'sky',2.2,exp=9)参数长度是: 4第二个参数是: 2>>>

 

06

变量作用域

Python的作用域一共有4种,分别是:

L (Local) 局部作用域

E (Enclosing) 闭包函数外的函数中

G (Global) 全局作用域

B (Built-in) 内置作用域(内置函数所在模块的范围)

 

以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。

 

注意:Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问。

07

函数作用域:局部变量、全局变量

局部变量是在函数内部定义的变量。全局变量是在函数外定义的变量。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。

total=0 #这是一个全局变量def multiplication(x,y):   total=x*y   #total在这里是局部变量   print('函数内是局部变量:',total)   return total
#调用函数multiplication(4,5)print('函数外是全局变量:',total)

输出结果

E:\python\python.exe F:/pythondemo/gui_1.py函数内是局部变量:20函数外是全局变量:0

 

08

global关键字和nonlocal关键字

当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

 

如果要修改嵌套作用域(外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:

global

 

 

有必要在函数中修改全局变量,使用global

>>> count=5>>> def MyFun():      global count      count=10      print(10)>>> MyFun()10>>> print(count)10

 

nonlogal

 

def out():   num1 = 10   def inner():       nonlocal num1   # nonlocal关键字声明       num1 = 20       print(num1)   inner()   print(num1)out()

运行结果

2020

 

闭包

 

一个内部函数里,对于外部作用域的(但不是在全局作用域的变量)变量引用,内部函数认为是闭包

 

>>> def FunX(x):        def FunY(y):             return x*y        return FunY>>> FunX(8)(5)40

 

09

匿名函数

格式:

lambda 原函数的参数:原函数的返回值

lambda [arg1 [,arg2,…..argn]]:expression

 

>>> def add(x,y):      return x+y >>> add(3,4) 7 
 >>>> g=lambda x,y:x+y >>> g(3,4) 7

 

10

递归

定义:函数调用自身过程

应用:

A:汉诺塔游戏

B:树结构的定义

案例:

汉诺塔游戏

http://baike.baidu.com/view/191666.htm

游戏说明:
我们对柱子编号为x, y, z,将所有圆盘从x移到z可以描述为:
<1>如果x只有一个圆盘,可以直接移动到z;
<2>如果x有N个圆盘,可以看成x有1个圆盘(底盘) + (N-1)个圆盘,首先需要把 (N-1) 个圆盘移动到 y,然后,将 x的最后一个圆盘移动到z,再将y的(N-1)个圆盘移动到z。
请编写一个函数,给定输入 n, x, y, z,打印出移动的步骤:

 

def hanoi(n, x, y, z):   if n == 1:       print(x, '-->', z)   else:       hanoi(n - 1, x, z, y)  # 将前n-1个盘子从x移动到y上       print(x, '-->', z)  # 将最底下的最后一个盘子从x移动到z上       hanoi(n - 1, y, x, z)  # 将y上的n-1个盘子移动到z上

n = int(input('请输入汉诺塔的层数:'))hanoi(n, 'X', 'Y', 'Z')

 

转载请注明:XAMPP中文组官网 » 少儿Python基础(5)Python函数

您必须 登录 才能发表评论!