在刚接触python的时候就有个疑问,什么是函数? python语言的函数和数学语言的函数有区别吗?

什么是函数

数学函数:给定一个数集A,假设其中的元素为x。现对A中的元素x施加对应法则f,记作f(x),得到另一数集B。假设B中的元素为y。则y与x之间的等量关系可以用y=f(x)表示

python函数:函数就是一段事先组织好的,它具有可重复性,封装好,用来实现某个相关联功能的代码段,函数能提高应用的模块性,和代码的重复利用率。

格式:

# 未携带函数格式
def name(): # name表示函数的名称
print('这是个函数') # 函数的内容
return name # 返回函数值 name() # 执行函数 # 携带参数函数格式
def name(name):
print('这是个函数名',name)
return name
name('name')

通常来说函数必须要遵循以下几点:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
  • 圆括号之间可以用于定义参数。
  • 函数内容以冒号起始,并且缩进。
  • return 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

可变与不可变传参

传不可变参数

# 传不可变参数
def name(a):
a = 20
print(a)
b = 10
name(b) # 结果为20
print(b) # 结果为10

传可变参数

def changeme( mylist ):
mylist.append([1,2,3,4])
print( "函数内取值: ", mylist)
return # 调用changeme函数
mylist = [10,20,30]
changeme( mylist ) 执行结果:
函数内取值: [10, 20, 30, [1, 2, 3, 4]]

不可变:整数、字符串、元组

可变参数:字典,列表

全局变量和局部变量

name = 'AnJing'
def name_01(name):
print('现在我的名字是:',name)
name = 'test'
print('现在我的名字是:',name) name_01(name)
print('外面我的名字是:',name) 执行结果:
现在我的名字是: AnJing
现在我的名字是: test
外面我的名字是: AnJing

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域,局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中

函数之间的调用

def jiafa(a,b):
'''加法'''
c = a + b
return c  # 返回C def jianfa(c):
'''减法'''
d = 2
s = c -d
print(s)
c = jiafa(2,3) # 调用函数加法
jianfa(c) # 调用函数减法 执行结果:
3 加法函数返回值赋给C,函数减法接受参数C进行完成减法操作

非固定参数

若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数,引入*args,**kwargs

# *args
def name(name,*args):
print(name,args)
name('AnJing','test',123) 执行结果:
AnJing ('test', 123) 这个时候会发现*args 传入的内容会变成一个元祖 # **kwargs
def name(name,**kwargs):
print(name,kwargs)
name('AnJing',it='test',age=123) 执行结果:
AnJing {'it': 'test', 'age': 123} 这个时候会发现**kwargs传入的内容会变成一个字典

递归

函数之间可以进行调用,那么函数本身也可以进行调用,这种函数我们叫做递归

# 递归函数
def calc(n):
print(n)
if int(n/2) ==0:
return n
return calc(int(n/2)) calc(10) 执行结果:
10
5
2
1

python函数内容的更多相关文章

  1. python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变

    函数参数传递本质上和变量整体复制一样,只是两个变量分别为形参a和实参b.那么,a=b后,a变了,b值是否跟着变呢?这取决于对象内容可变不可变 首先解释一下,什么是python对象的内容可变不可变? p ...

  2. python 函数之day3

    一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...

  3. Python函数讲解

    Python函数

  4. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  5. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

  6. Python入门笔记(18):Python函数(1):基础部分

    一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...

  7. 4.python函数基础

    一.函数 1.函数简介 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但 ...

  8. python字符串内容替换的方法(转载)

    python字符串内容替换的方法 时间:2016-03-10 06:30:46来源:网络 导读:python字符串内容替换的方法,包括单个字符替换,使用re正则匹配进行字符串模式查找与替换的方法.   ...

  9. Day03 - Python 函数

    1. 函数简介 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print():也可以自己创建函数,这 ...

随机推荐

  1. mysql安装及简单操作

    sudo grep mysql_root_passwd /root/env.txt (现在很多人开始使用云主机,登录云主机之后可以根据该命令查看阿里云数据库密码) mysql 安装:rpm+retha ...

  2. 利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二)

    前期准备 引入phpqrcode类库(下载地址:https://download.csdn.net/download/weixin_37557729/11891240:支持彩色二维码的下载地址:htt ...

  3. 高通lk屏幕向kernel传参

    LK把相关参数报存到cmdline上: 在Bootable\bootloader\lk\dev\gcdb\display\gcdb_display_param.c上gcdb_display_cmdli ...

  4. 高通平台开机LOGO修改LK(bootloader)下实现【转】

    网络上已经有许多在kernel中修改开机Logo的文章,本文就LK下实现开机logo进行简述 需要用到ffmpeg工具,没有安装ffmpeg请参考这里: http://blog.csdn.net/re ...

  5. java8-10-Stream的终止操作

      Stream的终止操作   * allMatch 是否匹配所有 * anyMatch 是否匹配一个 * noneMatch 是否没有匹配一个 * findFirst 返回第一个   * count ...

  6. Xposed优缺点和入门

    Xposed框架的原理是替换安卓系统/System/bin目录下的文件,从而实现对系统某些功能的替换,进而给予基于 Xposed 框架开发的App更多权限. 优点:1.功能强大2.执行效率快缺点:1. ...

  7. 2019 CVPR 基于GAN的ImageCaptioning论文

    1.MSCap: Multi-Style Image Captioning with Unpaired Stylized Text 生成多种风格的caption 当前的image captioning ...

  8. QT向界面中嵌套新的界面

    简单说下 想要实现的内容 我们有一个主窗口mainwindow,需要向其中放入新的界面,你可以自己定义里面内容. 大致的效果图如下 实现起来就是利用QT的layout布局 使用水平布局QHboxlay ...

  9. 设计模式-Template(行为模式) 采用 继承的方式 将算法封装在抽象基类中,在子类中实现细节。利用面向对象中的多态实现算法实现细节和高层接口的松耦合。

    以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Template.h class AbstractClass { public: virtual ~AbstractCla ...

  10. thinkphp5.1单模块设置

    thinkphp5.1单模块 1. // 是否支持多模块'app_multi_module' => false, // 自动搜索控制器'controller_auto_search' => ...