我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【12】Python函数学习(中)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【12】Python函数学习(中)

作用域、局部和全局变量

 

 

前向引用:

def test(name,age=18,*args,**kwargs):  
    print(name)
    print(age,args,kwargs)
    school("Test")   #程序执行从上到下的,这里的school还没定义,所以执行报错。
test('alex',age=20,flag="F",water=1.5)   

def school(source):
    print(source)

运行结果:

报错NameError: name 'school' is not defined

 

正确写法:

def test(name,age=18,*args,**kwargs):
    print(name)
    print(age,args,kwargs)
    school("Test")


def school(source):
    print(source)

test('alex',age=20,flag="F",water=1.5)

运行结果:

alex

20 () {'flag': 'F', 'water': 1.5}

Test

 

 

局部变量(只在函数里生效,这个函数就是这个变量的作用域)

def logers(name):
    print('before change:',name)
    name='ALEX'
    print('after change:',name)
    age=23


name='alex'
logers(name)
print(name)

print(age)  #这里报错,NameError: name 'age' is not defined,,age属于局部变量,只能在局部生效。

运行结果:

before change: alex

after change: ALEX

alex

 

 

全局变量(在顶层,第一级定义的变量都是全局变量)

school='Oldboy'   #顶层定义全局变量
def logers(name):
    school="Mage"  #局部变量
    print('before change:',name,school)
    name='ALEX'
    print('after change:',name)
    age=23

name='alex'
logers(name)
print(name)
#print(age)
print(school)

运行结果:

before change: alex Mage  #局部变量优先,虽然内部变了,但是全局变量还是没变。

after change: ALEX

alex

Oldboy  #全局变量

 

改全局变量

不要这么用1:

school='Oldboy'
def logers(name):
    global school  #我要把函数的全局变量改了
    school="Mage"
    print('before change:',name,school)
    name='ALEX'
    print('after change:',name)
    age=23

name='alex'
logers(name)
print(name)
#print(age)
print(school)

运行结果:

before change: alex Mage

after change: ALEX

alex

Mage

 

总结:

  1. 局部变量的作用域只在子程序(函数)中有效

    2、全局变量的作用域在整个程序

    3、全局变量配置在程序最顶层

    4、需要把全局变量改为局部变量那就用global 变量名(不要那么用)

     

    不要这么用2:(作死)

def student():
    global name  #这个作用是把 name定义为全局变量
    name='alex'

student()
print(name)

 

为啥:容易混乱程序(找bug找死你)

 

 

递归:(在函数内部可以调用自己)

1.必须要有明确的结束条件

2.每次进入更深一层的时候,问题规模应该比上一层要小

3.递归效率不高,递归层次过多会导致栈溢出。(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减少一层栈帧。由于栈的大小不是无限的,所以递归次数过多会导致栈溢出。)

 

def calc(n):   #程序开始,取calc实参
    print(n)  #打印判断结果
    if int(n/2) >0 : 
        return calc(int(n/2)) #递归
    print('>>>',n)
calc(10)

运行结果:

10

5

2

1

>>> 1

 

 

函数式编程介绍:

函数式编程是一种抽象程度很高的编程范式,纯粹的函数式编程语言的编写没有变量。因此,任意一个函数,只要输入确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此这种函数是有副作用的。

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数。

Python对函数式编程提供部分支持,由于python允许使用变量,因此,python不是纯函数式编程语言。

想学函数式编程可以学lisp、hashshell、erlang

 

 

高阶函数:

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就叫做高阶函数。

def add(a,b,f):
    return f(a)+f(b)

res=add(3,-6,abs)  #abs 绝对值的意思
print(res)

结果:

9


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【12】Python函数学习(中)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【12】Python函数学习(中)

作用域、局部和全局变量  前向引用:def test(name,age=18,*args,**kwargs):      print(name)    print(age,args,kwargs)    school("Test")   #
2023-01-31

Python学习-函数

DRY:don`t repeat yourself函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建
2023-01-31

Python学习——函数

1.函数定义:def Firstfunction(): 'Mashiro' print("I love Mashiro!")print(Firstfunction.__doc__)#函数文档Firstfunction()#函数调
2023-01-30

Python学习 :函数

函数函数(Functions)是指可重复使用的程序片段。它们允许你为某个代码块赋予名字,允许你通过这一特殊的名字在你的程序任何地方来运行代码块,并可重复任何次数。这就是调用(Calling)函数。函数的作用:1、减少重复代码2、方便修改,更
2023-01-30

Python学习:函数(function

编写函数def是可执行的代码。Python函数是有一个新的语句便携的,即def。不像C这样的编译语言,def是一个可执行的语句,函数并不存在,知道Python运行了def后才存在。事实上,if语句、while语句升至是其他的 def中嵌套都
2023-01-31

【Python学习21】Python中函

今天学习了Python函数的用法,了解了使用Python如何定义一个函数。而且代码编写过程中也遇到了一些小小的错误,特此记录一下,以方便以后在遇到同样错误时能够快速找到问题的点。# --coding: utf-8 --# 定义4个简单的函数
2023-01-31

python的函数学习2

用来存放名字的地方,有三种名称空间:内置名称空间,全局名称空间,局部名称空间。1 比如执行test.py:2 3 python test.py4 1、python解释器先启动,因而首先加载内置名称空间5 2、执行test.py文件,然后以文
2023-01-30

python函数学习一(跳出函数)

#!/bin/python#-*- coding -*-def printinfo( nu, *others ): print nu for var in others: print var retur
2023-01-31

#12 Python函数

前言矩形的面积 S = ab,只要知道任一矩形的的长和宽,就可以带入上式求得面积。这样有什么好处呢?一个公式,适用于全部矩形,一个公式,重复利用,减少了大脑的记忆负担。像这类用变量代替不变量的思想在数学中称为函数,Python中,也有类似的
2023-01-30

python学习笔记 函数

一等函数在python中,函数是一等对象。编程语言理论家把“一等对象”定义为满足以下条件的程序实体:在运行时创建能赋值给变量或数据结构中的元素能作为参数传给函数能作为函数的返回结果在python中,整数、字符串和字典都是一等对象,没有什么特
2023-01-31

python基础学习12----装饰器

装饰器可以在不修改目标函数代码的前提下, 在目标函数执行前后增加一些额外功能例如有一个简单的函数import timedef func1(): print("这是一个简单的函数") time.sleep(2)想给这个函数增加一个
2023-01-30

笨办法学Python - 习题11-12

目录 1、习题 11: 提问 2、习题 12: 提示别人 3、总结 1、习题 11: 提问学习目标:了解人机交互场景,熟悉raw_input 的用法。1
2023-01-30

Python学习笔记4——函数

函数1 # 函数需要先定义,关键字 def2 def func():3 print("我是一个函数")4 5 # 函数的调用6 func()执行结果:我是一个函数内建函数(内置函数)help(), print(), format()
2023-01-30

python基础学习11----函数

一.函数的定义def 函数名(参数列表): 函数体 return语句return语句不写或后边不加任何对象即为return None二.函数的参数无参数def func1(): print("没有参数")一个参数def f
2023-01-30

PYTHON学习0039:函数---迭代

迭代就类似循环。数字不是可迭代类型。Iterable表示是否是可迭代对象,Iterator表示是否是迭代器。数据流是一个有序的数据排列集合,表示没有截止的,就像水流和时间一样,无穷无尽的。而列表,字典等有起点和终点的。
2023-01-31

Python自动化开发学习12-Mari

主流的关系型数据库大概有下面这些:Oracle : 甲骨文公司的企业级的数据库SQL Server : 微软的MySQL : 免费的数据库,现在也属于Oracle的旗下产品MariaDB : 开源的数据库,MySQL的一个分支Postgre
2023-01-31

Python中lambda函数技巧的快速学习

快速学习Python中lambda函数的应用技巧,需要具体代码示例在Python编程语言中,lambda函数是一种基于表达式的匿名函数,可以简化编码过程,提高代码的可读性和可维护性。本文将介绍lambda函数的基本用法,并通过具体的代码示
Python中lambda函数技巧的快速学习
2024-02-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录