函数

函数,在BASIC中,叫subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java中叫method。

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

定义一个不带参数的函数:

defsayhi():print('hello')sayhi()

定义一个带参数的函数:

defsayhi(name):print('hello', name)

sayhi('Jack')

函数参数

形参:在函数定义时接收

默认参数:函数定义时即默认给参数赋值,调用时可以不需要额外赋值,位置应在位置参数之后。(有关默认参数陷阱,请见:函数的默认参数陷阱)

关键参数:指定参数名,即成为关键参数,但是关键参数必须放在位置参数之后。

非固定参数(动态参数):

(1)动态位置参数:参数前加*号,传递的参数就可以不再是固定的个数,传过来的所有参数打包成元组。(形参可以是*args,也可以是*[列表]的形式)

(2)动态关键字参数:形式参数前加**号,传递的可以是未定义的关键字参数,以字典的key-value保存。

形参排列顺序:位置参数、动态位置参数(*args)、默认参数、动态默认参数(**kwargs)

--如果想将一整个字典传入kwargs,则应在实参前也加上**号。

实参:在函数调用时传值

按照位置传值:现有一个列表(元组)args,使用*args传入可以将args拆分后传入函数,直接使用args传则会在函数中得到(args,)

按照关键字传值:现有一个字典kwargs,使用**kwargs传入可以将kwargs拆分后传入函数(且此处的键必须为字符串类型),直接使用kwargs传会报错。

函数参数总结:

函数返回值

函数的外部代码想要获取函数的执行结果,就可以用函数的return语句把结果返回。

注:1.函数执行过程中,遇return即停止执行并返回结果,可以理解为return语句代表函数的结束。

2.如果未在函数中指定return,则返回值为None。

3.函数永远只能返回一个值,当有多个值时会打包成元组返回。

局部变量与全局变量

全局变量:定义在函数外部一级代码的变量,在全局都能用

局部变量:定义在函数里的变量,只能在局部生效

在函数内部,可以引用全局变量,但不能修改(global后则可以修改)。如果全局和局部都有一个同名,函数查找顺序是由内而外的。

作用域

在Python中,一个函数就是一个作用域(和JavaScript类似); C#、Java中作用域为{ }

局部变量放置在其作用域中,代码定义完成后,作用域已经生成,作用域链向上查找。验证如下:

1 age = 18 #全局作用域

2 defshow_age():3 new_age = 19 #外层函数局部作用域

4 definner():5 print(age)6 print(new_age)7 show_age()

打印结果:

内层函数用到了外层函数以及全局的作用域的变量,但变量在此只能引用不能改变,否则会报错。

命名空间

命名空间也称名称空间,是存放变量名字的地方。举例说明,x=1,1存放在内存中,x变量名存在哪里呢?x本身也存在内存中。

名称空间正是存放名字x与1绑定关系的地方,它不仅存x名,也存了绑定关系。

名称空间共3种:

1.locals:函数内的名称空间,包括局部变量和形参。

2.globals:全局变量,程序所有的变量及绑定关系。

3.builtins:内置模块的名称空间

python位置函数_Python之函数——基础篇相关推荐

  1. 中文python笔记_Python学习笔记-基础篇

    安装 Linux Linux已经自带Python了,我的Centos7自带Python2.7.4,我通过源码安装来更新版本. #!/bin/bash #源码安装 wget https://www.py ...

  2. Python详细介绍及使用(基础篇)

    Python详细介绍及使用(基础篇) 第一章 Python基础     Python的由来:1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器.Python来自Guido所 ...

  3. Python操作lxml库(基础篇)

    ​ 活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰. 学习日记 目录 目录 学习日记 一.lxml库概述 1.lxml库介绍 2.l ...

  4. python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...

    本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...

  5. python入门很简单 洪锦魁_Python入门(基础篇)

    第三天啦,这是我在知乎上写的第三篇文章.今天因为学校有期中考试,更新的有点晚了,抱歉哈.我看了我昨天的被浏览量,有58位小伙伴看了我的文章,有一位朋友给点了赞,谢谢这一位陌生人,让我在考完试后还能坐在 ...

  6. Python数据可视化教程之基础篇

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 开运张 | 作者 知乎专栏 | 来源 https://zhuanlan.zhihu.c ...

  7. python面试题库——1Python基础篇

    第一部分 Python基础篇(80题) 为什么学习Python? 语言本身简洁,优美,功能超级强大,跨平台,从桌面应用,web开发,自动化测试运维,爬虫,人工智能,大数据处理都能做 Python和Ja ...

  8. redis实例python_生产消费者模式与python+redis实例运用(基础篇)

    根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...

  9. python之路day4_【Python之路Day4】基础篇

    今日目录: 1. Python内置函数 2. 装饰器 一. Python内置函数 内置函数主要是使用比较频繁的或者是元操作,所以Python通过内置函数的方式提供给开发者,如下表: 下面现阶段只介绍一 ...

最新文章

  1. 【其他】将幕布文章OPML转换为Markdown的方法
  2. KOAProgressBar
  3. PHP框架 one 1.6.0 发布
  4. 虚拟机上部署的项目 访问路径怎么写_桌面虚拟化即将流行开来——基于Hyper-V虚拟机的桌面虚拟化部署...
  5. 计算机网络管理员中级第一套理论,计算机网络管理员第一套(中级)理论.doc
  6. ajax 传递arraybuffer,jQuery $ .ajax或$ .load是否允许responseType arrayBuffer?
  7. ptmalloc、tcmalloc与jemalloc内存分配器对比分析
  8. CentOS7安装和配置ftp服务
  9. 学习python:模块的建立与发布
  10. RabbitMQ如何解决各种情况下丢数据的问题
  11. Excel分组最大级别为8(outlineLevel最大为7)
  12. 二、LaTeX学习笔记——基本结构、设置表格、文字变形及符号、插入图片
  13. 计算机桌面图标方向变了,Win7系统桌面图标变了怎么办?
  14. 工作中遇到的问题和一些经验总结
  15. 【知识兔】自学Excel之10:格式化工作表
  16. android数字滚动动画,数字滚动效果 RollingText
  17. android qq授权申请appkey,手把手带你集成友盟实现授权登录、分享
  18. 2016年苹果开发者账号申请
  19. 18届清华硕士狂拿18家互联网公司sp offer总结
  20. linux账号密码输入没反应,linux 主机上出现输入正确的账号和密码,无法登陆,如何操作...

热门文章

  1. win10无法登陆SSG进行WEB UI管理
  2. 视频直播点播平台EasyDSS降低视频流直播延迟的2种方法
  3. 微信小程序商机_微信小程序提供的创业商机有哪些
  4. php 去除html反斜杠,PHP去掉反斜杠函数:stripslashes()
  5. Lecture 06 Converage——Hinton课程
  6. c++ string头文件
  7. 代码重构(二)25种代码优化示例
  8. 函数解剖——深挖getchar()与putchar()
  9. python怎么输入函数_python怎么用input函数输入一个列表
  10. Js-小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词.....