定义一个函数

def function_name(形式参数):

  代码块

  return 'Value' #如果没有写return,则默认返回None

  # 一个函数到return这一行就结束执行了,在return后面写的东西不执行

function_name(实际参数)  # 只有call这个函数的时候才会执行函数里面的代码

函数把功能提取了出来,提高效率减少代码量

定义函数的时候,参数可以有不止一个,可以是普通参数,默认参数,动态参数。默认参数放在普通参数后面,动态参数放在最后面。

输入实际参数的时候按照形式参数顺序依次写入,如果不按照顺序,则需要把参数名加上写入。

默认参数可以有默认值,输入实际参数的时候可以覆盖默认值。

动态参数通常写为'*args'和'**kwargs'两颗星号的放在后面,一颗星的参数算作一个tuple, 两颗星的算作一个dict。

函数外部的变量为全局变量,函数里面是局部变量,python内置的为内置变量。遵循local > global> built-in 的变量查找顺序。

为了便于区分,全局变量用全大写。在函数内如果需要使用全局变量,需要在变量前加上global。

 def top_movies(num=5, *args, **kwargs):
print(num)
print(args)
print(kwargs) rank = (0, 1, 2, 3, 4, 5)
keywords = { '': 'The Shawshank Redemption', '':'Fight Club', '':'Toy Stories', '':'Radio Rock', '':'Fantastic Mr. Fox'} top_movies(*rank, **keywords) '''
运行后得到结果:
0
(1, 2, 3, 4, 5)
{'1': 'The Shawshank Redemption', '5': 'Fantastic Mr. Fox', '2': 'Fight Club', '3': 'Toy Stories', '4': 'Radio Rock'}
参数第一个数字默认为num, 虽然是在rank这个tuple里面,剩余的几位为args,最后为kwargs。可见是严格按照指定参数顺序来的。
如果不在实参前加上'*'和'**',输入的参数会默认为实际参数的第一个值。
'''

Reference:

想不起来讲了什么内容的时候,参考一下老师的教学笔记

http://www.cnblogs.com/wupeiqi/articles/5453708.html

【Python全栈笔记】03 [模块二] 16-17 Oct 函数的更多相关文章

  1. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  2. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  3. Python全栈day 03

    Python全栈day 03 一.运算符补充 in ,逻辑运算符,判断某字符或某字符串是否在一个大的字符串中,输出得到bool型数据. value = '我是中国人' v = '我' if v in ...

  4. Python全栈开发:模块

    模块,用一砣代码实现了某个功能的代码集合. 参考资源:http://www.cnblogs.com/alex3714/articles/5161349.html 类似于函数式编程和面向过程编程,函数式 ...

  5. Python全栈day21-22-23(模块)

    一,python的模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  6. python 全栈开发,Day10(动态参数,命名空间,作用域,函数嵌套)

    一.动态参数 def func(a,b,c,d,e,f,g): pass func(1,2,3,4,5,6,7) 如果加30个参数呢?有没有万能的参数,可以代表一切参数呢? *args 动态参数,万能 ...

  7. 【Python全栈笔记】03 [模块二] 16-17 Oct Set 集合,三目运算

    Set 集合 set - unordered collections of unique elements 创建一个set/一个空set # create a new set set1 = {1,2, ...

  8. 【Python全栈笔记】04 [模块二] 18 Oct lambda表达式, 内置函数

    lambda表达式 lambda表达式是函数的一种简化,如下面两种函数定义方法,实际上效果是一样的. 使用lambda表达式的函数,func2是函数名,lambda: 后面的123 即为返回值. de ...

  9. 【Python全栈笔记】01 [模块二] 14-15 Oct 运算符和字符串 4-1

    编码的问题 中文版 Windows 终端是默认GBK编码格式,python2默认为ASCII编码,虽然我们注释了需要用UTF-8,但是通过命令行运行的文件如果print中文内容还是会出现乱码. Uni ...

随机推荐

  1. centos 7 + mono + jexus 环境安装

    1.安装 mlocate yum list|grep locate yum install mlocate.x86_64 updatedb 2.安装 yum-utils yum list|grep y ...

  2. Struts2:效验器——注解

    效验器三类: 编程式——Java代码 声明式——xml 注释法——@ 注解验证可以修饰属性的getter方法,也可以修饰执行方法Action中校验失败时,返回input逻辑视图 struts.xml ...

  3. 查找SQL SERVER被锁的表和解决方法

    查找数据库中被锁表代码: select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName ...

  4. LPC2478_调试心得(转)

    1.在调试“E:\htwang\smart2200v201\ARM嵌入式系统实验教程(二)\开发板出厂编程程序\液晶显示程序\LCM_Disp”的程序时,想使用外部RAM进行仿真调试,在将ADS1.2 ...

  5. 64位系统装oracle(ora-12154 )

    装了n次的oracle,昨下午装服务器的oracle,结果遇到了一个问题,让我百思不得其解,但最终在大家的帮助下终于解决了. 我装的服务器是windows server 2007 64位的,装完ora ...

  6. 在Mac上配置adb命令

    在Mac上配置adb命令 在Mac OS中使用adb命令时,应进行变量配置,步骤如下: 一.终端中输入 cd ~ 二.输入touch .bash_profile 回车 touch:如果没有,则创建文件 ...

  7. 好的sql

    select count(2) from vw_pmcthtdj A WHERE a.HTBL_ID not in (select jg.jgjs_htid from PMCTJGJS jg wher ...

  8. Linux下安装JDK并配置环境变量

    1. 查询是否默认安装有JDK [root@localhost bin]# java -version java version "1.6.0_22" OpenJDK Runtim ...

  9. powerdesigner逆向工程,从数据库导出PDM

    本文工具: powerdesigner 15, 数据源oracle 11g 第一步如图,新建一个模型 第二步:选中当前模型 testdb.  然后在菜单栏database->update mod ...

  10. swift 键盘属性与事件

    1.键盘的类型 textField1.keyboardType = UIKeyboardType.default //系统默认的虚拟键盘 textField1.keyboardType = UIKey ...