1、集合

主要作用:

(1)去重

(2)关系测试,交集、差集difference()、并集union()、反向差集symmetric_difference()、子集issubset()、父集issuperset()

2、函数

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

函数特性:(1)减少重复代码

     (2)使程序变的可扩展

     (3)使程序变得易维护

语法:

def sayhi():#函数名
    print("Hello, I am nobody!")

sayhi() #调用函数

带参数函数

def calc(x, y):
    res  = x**y
    return res

c = calc(a, b)
print(c)  

函数参数与局部变量

形参:变量只有在被调用时才分配内存,调用结束即释放。只在函数内部有效;

实参:可以是常亮、变量、表达式、函数,无论是何种类型的量,在进行函数调用时,其都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

def calc(x, y):
    res = x**y
    return res

c = calc(a, b)
print(c)  

默认参数

比如网站注册用户,不填写的国籍信息默认为中国,就是通过默认参数

def stu_register(name, age, course, country="CN"):

关键参数

正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需制定参数名即可,关键参数必须放在位置参数之后。

stu_register(age=22,name='alex',course="python",)

非固定参数

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

def stu_register(name,age,*args):#*args会把多传入的参数编程一个元组形式
    print(name,age,args)

stu_register("Alex",22)
#输出
#Alex 22()#后面这个()就是args,只是因为没传只,所以为空

stu_register("Jack",32,"CN","python")
#输出
#Jack 32 ("CN", "python")

**kwargs

def stu_register(name,age,*args,**kwargs):#*kwargs 会把多传入的参数变成一个dict形式
    print(name,age,args,kwargs)

stu_register("Jack", 32, "CN","Python",sex="Male",province="ShanDong")

局部变量

name = "Alex Li"

def change_name(name):
    print("before change:",name)
    name = "a man has Tesla"#局部变量
    print("after change", name)

全局与局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。

全部变量作用域是整个程序,局部变量作用域是定义该变量的子程序。

当全局变量与局部变量同名:在定义局部变量的子程序内,局部变量起作用;在其他地方全局变量起作用。

返回值

想要获得函数的执行结果,就可以用return语句把结果返回

注意:

  1、函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so也可以理解为return语句代表着函数的结束;

  2、如果未在函数中指定return,那这个函数的返回值为None。

嵌套函数

name = "Alex"

def change_name():
    name = "Alex2"

    def change_name2():
        name = "Alex3"
        print("第3层打印",name)

    change_name2()
    print("第2层打印",name)

change_name()
print("最外层打印",name)

 此函数调用出错

递归 

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

def calc(n):
    print(n)
    if int(n/2) == 0:
        return n
    return calc(int(n/2))

calc(10)  

递归特性:

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

2、每次进入更深一层递归时,问题规模相比上次递归都应有减少

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

堆栈扫盲http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html 

匿名函数

匿名函数就是不需要显示的指定函数

def calc(n):
    return n**n

print(calc(10))

clac = lambda n:n*n
print(calc(10))  

匿名函数主要是和其他函数搭配使用,例如

res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
    print(i)

函数式编程

函数式编程中的函数这个术语不是指计算机中的函数(实际上是Subroutine),而是指数学中的函数,即自变量的映射。也就是说一个函数的值仅决定于函数参数的值,不依赖其他状态。比如sqrt(x)函数计算x的平方根,只要x不变,不论什么时候调用,调用几次,值都是不变的。

Erlang,Haskell

高阶函数

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

def add(x, y , f):
    return f(x) + f(y)

res = add(3,-6,abs)
print(res)  

内置参数

内置参数详解 https://docs.python.org/3/library/functions.html?highlight=built#ascii

 

6th-Python基础——集合、函数的更多相关文章

  1. python基础——匿名函数

    python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便.  在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...

  2. python基础——返回函数

    python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.  我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...

  3. python基础——sorted()函数

    python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...

  4. python基础——filter函数

    python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...

  5. python基础——匿名函数及递归函数

    python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...

  6. 八. Python基础(8)--函数

    八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x):     ' ...

  7. python基础之函数详解

    Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...

  8. Python学习笔记(一)python基础与函数

    1.python基础 1.1输入与输出 输出 用print加上字符串,就可以打印指定的文字或数字 >>> print 'hello, world' hello, world > ...

  9. Day3 - Python基础3 函数、递归、内置函数

    Python之路,Day3 - Python基础3   本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...

  10. Python基础__函数

    本节将进入函数的介绍,函数是Python基础中最精彩的部分之一,接下来将对函数做详细介绍.函数 函数就是对代码进行一个封装.把实现某一功能的代码进行封装到一起.下次需要使用时不需要进行编写代码直接调用 ...

随机推荐

  1. transform的兼容性写法浏览器 和 transition

    transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg); /* Firef ...

  2. java JDK环境的配置

    1.  在Administrator用户变量中新建: 变量名:JAVA_HOME 变量值:C:\Program Files (x86)\Java\jdk1.7.0_01 2.  在Administra ...

  3. HTML经典模板总结(地址)

    HTML经典模板总结 地址:http://download.csdn.net/tag/html%E6%A8%A1%E6%9D%BF?from=singlemessage

  4. CentOS最小化系统,怎么安装图形界面

    CentOS最小化系统做服务器,都是没有图形界面的.很多初学者不习惯命令行操作,那么应该怎么安装图形界面?本经验咗嚛以centos6.5系统为例   方法步骤:   首先进入centos系统界面,先测 ...

  5. [No0000193]Chrome浏览器控制台(console)花式调试

    对前端开发者来说,Chrome Dev Tools(开发者工具,以下简称CDT)是一个不可或缺的开发调试工具,但是你可能只用过console.log(),却不知道console还有很多功能强大的调试方 ...

  6. Restful API设计规范

    理解RESTful架构 Restful API设计指南 理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...

  7. Visual Studio 2017使用Asp.Net Core构建Angular4应用程序

    文章转载请著名出处:http://www.cnblogs.com/smallprogram 你需要了解的名词 1. NodeJS,这是一个基于Chrome V8 JavaScript引擎构建的Java ...

  8. 数据库join操作(MySQL)

    左连接,右连接,内连接 1.原始表:左表user_t,右表user_info 2.执行连接 #LEFT JOIN ; #RIGHT JOIN ; #INNER JOIN ; 2.1左连接:以左边为主 ...

  9. rosetta对称性文件(rosetta symmetry file)的产生及应用

    针对对称性PDB 3UKM,使用make_symmdef_file.pl脚本,可以执行产生对称单元及对称文件: $> $ROSETTA3/src/apps/public/symmetry/mak ...

  10. Bukkit之yaml动态读取

    在使用bukkit框架写插件的时候会经常使用到yml格式的文件来存储配置或者玩家数据,这里来说一下实现yml中数据的动态读写: 先来看一下yml文件中的内容结构 public boolean addB ...