函数的定义和使用

1 def test(x):       # x代表形参
2 '''
3 2*x+1
4 :param x:整形数字
5 :return:返回计算结果
6 '''
7 y = 2*x+1
8 return y
9 p = test(3) # test()表示运行名为test函数,3代表实参,给x进行赋值
10 print(p)

函数的定义:

  • def: 表示函数的关键字
  • 函数名: 函数的名称, 根据函数名调用函数
  • 函数体: 函数中进行一系列的逻辑计算
  • 参数: 为函数执行完毕后, 可以给调用者返回数据

一. 为什么要用函数?

  1. 减少代码量
  2. 保持一致性
  3. 易维

二. 函数的参数

函数有三种不同的参数:

  • 普通参数

    # ######### 定义函数 #########

      # name 叫做函数func的形式参数,简称:形参
    def func(name):
    print name # ######### 执行函数 #########
    # 'wupeiqi' 叫做函数func的实际参数,简称:实参
    func('wupeiqi')
  • 默认参数

      def func(name, age = 18):
    
          print "%s:%s" %(name,age)
    
      # 指定参数
    func('wupeiqi', 19)
    # 使用默认参数
    func('alex') 注:默认参数需要放在参数列表最后
  • 动态参数 *args

      def func(*args):
    
          print args
    
      # 执行方式一
    func(11,33,4,4454,5) # 执行方式二
    li = [11,2,2,3,3,4,54]
    func(*li)
  • 动态参数 **kwargs

      def func(**kwargs):
    
          print args
    
      # 执行方式一
    func(name='wupeiqi',age=18) # 执行方式二
    li = {'name':'wupeiqi', age:18, 'gender':'male'}
    func(**li)

三. 函数的变量

函数的变量可分为 全局变量和局部变量

全局变量(大写)

定义:没有缩进的变量

局部变量(小写)

定义:子程序下定义的变量

name = 'lhf'                 # 这里就指全局变量

def change_name():
name = '帅了一比' # 这里就指局部变量
print('change_name', name) change_name()
print(name) 结果
change_name 帅了一比
lhf

global和nolocal

global声明是全局变量,nolocal指定上一级变量

未声明全局变量

x = 99
def func():
x = 88
func()
print(x) #输出99

声明全局变量

x = 99
def func()
global x
x = 88
func()
print(x) #输出88

未指定上一级变量

def func():
count = 1
def foo():
count = 12
foo()
print(count)
func() #输出1

指定上一级变量

def func():
count = 1
def foo():
nonlocal count
count = 12
foo()
print(count)
func() #输出12

四. 递归函数

ps: 用的好的都是大牛~

就是函数自己调用自己

特性:

  1. 必须有一个明确的结束条件,

  2. 每次进入深一层递归时,问题规模都应有所减少

     def calc(n):
    print(n)
    if int(n / 2) == 0:
    return n # 当上面的条件成立后一个真值,返回到函数
    res = calc(int(n / 2))
    print(n,res)
    return res # 返回res的值,要将真值一层一层传递回去 calc(10)

五. lamabda匿名函数

lambda用法,冒号之前的是入参,冒号之后的是表达式,返回的值,最简单的函数

print [(lambda x:x*x)(x)for x in range(11)]
#结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print (lambda x:x*x)(3)
#结果:9
g=lambda x:x*x
print g(4)
#结果:16

python - 函数的定义和使用的更多相关文章

  1. Python函数的定义、参数传入与函数的调用

    作为计算机代码的一种抽象方式,函数在Python中扮演了极为重要的角色.今天给大家介绍Python函数的定义.参数的传入以及调用方式.其中函数参数的传入方式为本节重点内容.Python函数的参数形式包 ...

  2. 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)

    详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参 ...

  3. 第十一篇 Python函数之定义&形参&实参&位置参数&关键字参数&可变长参数&默认参数

    函数的定义:函数是为了完成某一特定功能的,函数是逻辑结构化和过程化的一种编程方法 函数的定义格式,函数一般都是有返回值的 #语法 #函数名要能反映其意义 def 函数名(参数1,参数2,参数3,... ...

  4. Python 函数之定义函数

    在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号: 然后,在缩进块中编写函数体,函数的返回值用return语句返回. 1.定义一个函数 def myfirst( ...

  5. python函数,定义,参数,返回值

    python中可以将某些具备一定功能的代码写成一个函数,通过函数可以在一定程度上减少代码的冗余,节约书写代码的时间.因为有一些代码实现的功能我们可能会在很多地方用到. 1.函数的声明与定义 通过def ...

  6. python 函数基础 定义

    一.函数介绍 1.为什么要有函数? 没有函数的代码组织结构不清晰,可读性差. 代码冗余 管理维护难度大,扩展性 2.什么是函数? 具备某一个功能的工具就是程序中的函数. 事先准备工具的过程就是:函数的 ...

  7. Python函数的定义与调用、返回值、参数

    一.函数是什么 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.比如print(),len()等.但你也可以自己创建函数,这被叫做用户自 ...

  8. python函数嵌套定义

    python的这个特性是很特别的,与C#和C++都不一样.请看下面的例子 def outFun(): def innerFun_0():#1.在内部定义一个函数 print("i am fi ...

  9. python 函数的定义及传参

    函数是一个通用的程序结构部件,是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 定义一个简单的函数: >>> def test(a): #创建一个函数,函数名是test ...

随机推荐

  1. POJ 1663:Number Steps

    Number Steps Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13758   Accepted: 7430 Des ...

  2. AngularJS 1.x 国际化——Angular-translate例子

    可运行代码如下: <!DOCTYPE html> <html ng-app="MyApp"> <head> <meta http-equi ...

  3. Android 体系结构介绍

    转自:http://blog.sina.com.cn/s/blog_4bc996c40100fawo.html 第一.操作系统层(OS)第二.各种库(Libraries)和Android 运行环境(R ...

  4. bzoj2194

    http://www.lydsy.com/JudgeOnline/problem.php?id=2194 卷积... 卷积并不高深,其实卷积就是两个多项式相乘的系数,但是得满足一点条件,就是f[n]= ...

  5. Coursera Algorithms Programming Assignment 4: 8 Puzzle (100分)

    题目原文:http://coursera.cs.princeton.edu/algs4/assignments/8puzzle.html 题目要求:设计一个程序解决8 puzzle问题以及该问题的推广 ...

  6. 【转载】深入理解Linux文件系统

      1.rm-rf删除目录里的文件后,为什么可以恢复? 首先创建一个空目录test,目录的blocksize为4096字节 为了空目录还是4096?首先,目录的大小取决它所包含的文件的inode(访问 ...

  7. Linux系统的整体目录结构和文件解析

    Linux系统目录结构 使用 ls / 查看系统的文件目录: /:根目录,根目录下一般只存放子目录,不存放文件.在linux系统中所有的文件都挂载该目录下. /bin:命令目录. 存放系统的可执行的二 ...

  8. Effective C++ 深入理解inline

    Effective C++ 深入理解inline inline语义 inline本义是将所调用函数用自身的函数本体替换之,免受函数调用所招致的额外开销,比宏还要不易出错:但是实际上inline的受编译 ...

  9. JavaScript--控制类名(className 属性)

    className 属性设置或返回元素的class 属性. 语法: object.className = classname 作用: 1.获取元素的class 属性 2. 为网页内的某个元素指定一个c ...

  10. IIS Express 错误提示汇总

    在做WEB Service开发中,要经常用到IIS Express服务器,有些自己遇到的问题做一个汇总以待后续查找. 错误类型: 问题来源:直接在项目上选择调试运行. 解决方案: 1.直接找到那个文件 ...