一、函数意义:可读性,复用性强

# def my_len(s):        #def 关键词开头,my_len函数名
# i=0
# for k in s:
# i+=1
# print(i)
# return i #返回值,没有返回值则打印出的是none
# lenth=my_len() #函数调用
# print(lenth)

函数

1.返回值三种类型:

返回值的3种情况
1.1没有返回值 —— 返回None
不写return
只写return:结束一个函数的继续
return None —— 不常用
1.2返回1个值
# 可以返回任何数据类型
# 只要返回就可以接收到
# 如果在一个程序中有多个return,那么只执行第一个
1.3返回多个值
# 用多个变量接收:有多少返回值就用多少变量接收
# 用一个变量接收: 得到的是一个元组
def func():
return {'k':'v'}
print(func()) -------> #{'k': 'v'} def func2():
return 1,2,3
r= func2()
print(r) -------> # (1,2,3)

返回值

2.

s = '金老板小护士'
def my_len(s):------------>s形式参数,形参;

ret=my_len('金老板小护士') ----->传递参数:传参;#'金老板小护士':实际参数,实参

#参数
#没有参数
#定义函数和调用函数时括号里都不写内容
#有一个参数
#传什么就是什么
#有多个参数
#位置参数
#站在实参的角度上:
#按照位置传参
#按照关键字传参
#混着用可以:但是 必须先按照位置传参,再按照关键字传参数
# 不能给同一个变量传多个值 #站在形参的角度上
#位置参数:必须传,且有几个参数就传几个值
#默认参数: 可以不传,如果不传就是用默认的参数,如果传了就用传的
def classmate(name,sex='男'):
print('%s : %s'%(name,sex)) classmate('二哥')
classmate('小孟')
classmate('大猛')
classmate('朗哥','女')
输出:
二哥 : 男
小孟 : 男
大猛 : 男
朗哥 : 女

参数练习

#只有调用函数的时候
#按照位置传 : 直接写参数的值
#按照关键字: 关键字 = 值
3.动态参数
#定义函数的时候:
#位置参数 : 直接定义参数
#默认参数,关键字参数 :参数名 = '默认的值'
#动态参数 : 可以接受任意多个参数
#参数名之前加*,习惯参数名args,
#参数名之前加**,习惯参数名kwargs
#顺序:位置参数,*args,默认参数,**kwargs
普通参数例题
# 动态参数有两种:可以接受任意个参数
#*args : 接收的是按照位置传参的值,组织成一个元组
#**kwargs: 接受的是按照关键字传参的值,组织成一个字典
#args必须在kwargs之前
def sum(*args):
n = 0
for i in args:
n+=i
return n
print(sum(1,2)) -------》3
print(sum(1,2,3)) -------》6
print(sum(1,2,3,4)) -------》10 def func(**kwargs):
print(kwargs) func(a = 1,b = 2,c =3) - ------》{'a': 1, 'c': 3, 'b': 2}#字典
func(a = 1,b = 2) -------》{'a': 1, 'b': 2}
func(a = 1) -------》{'a': 1}

动态参数例题

def func(*args,default = 1,**kwargs):
print(args,kwargs)
func(1,2,3,4,5,default=2,a = 'aaaa',b = 'bbbb',)
输出:(1, 2, 3, 4, 5) {'a': 'aaaa', 'b': 'bbbb'}
注释: #顺序:位置参数,*args,默认参数,**kwargs

混合动态参数

4.动态参数的另一种传参方式

def func(*args):   #站在形参的角度上,给变量加上*,就是组合所有传来值。
print(args)
func(1,2,3,4,5)
输出 ----》(1, 2, 3, 4, 5)
l = [1,2,3,4,5]
func(*l) #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散
输出-------》(1, 2, 3, 4, 5)
def func(**kwargs):
print(kwargs)
func(a=1,b=2) 输出 -----》{'b': 2, 'a': 1}
d = {'a':1,'b':2} #定义一个字典d
func(**d)
输出----------》{'b': 2, 'a': 1}

5.默认参数陷阱

如果默认参数可变的数据类型,在每一次调用的时候,没有传入参数的就会公用一个数据类型资源.

def xing(l=[]):
l.append(1)
print(l)
return l
xing() #[1]
xing() #[1, 1]
xing([1,2]) #[1, 2, 1] #传入参数了,就不会沿用公共的数据类型资源了
xing() #[1, 1, 1]

6 三种类型的命名空间:

一:内置命名空间----->python解释器
二:全局命名空间-----》我们写的代码,但不是函数代码
三:局部命名空间-----》函数
当调用函数的时候 才会产生这个名称空间 随着函数执行的结束 这个命名空间就又消失了
三个层级命名空间只能从下往上调用,不能从上往下调用
函数名====》函数内存地址
函数名()===》调用函数
函数内存地址()====》调用函数
7 两种作用域
全局作用域:===》作用全局====>内置和全局命名空间都可以作用 globals()
局部作用域===》作用局部====》函数 locals()
8.名字空间的使用层级
#在正常情况下,直接使用内置的名字
#当我们在全局定义了和内置名字空间中同名的名字时,会使用全局的名字
#当我自己有的时候 我就不找我的上级要了
#如果自己没有 就找上一级要 上一级没有再找上一级 如果内置的名字空间都没有 就报错
# 多个函数应该拥有多个独立的局部名字空间,不互相共享
def max(l):
print('in max func')
print(max([1,2,3])) 输出-----------》in max func
#当我们在全局定义了和内置名字空间中同名的名字时,会使用全局的名字 def input():
print('in input now')
input() 输出 ----------》in input now
#当我自己有的时候 我就不找我的上级要了 def func():
input = 1
print(input)
func() 输出-----------》1
#如果自己没有 就找上一级要 上一级没有再找上一级 如果内置的名字空间都没有 就报错

												

python--函数基础一的更多相关文章

  1. 《转》Python学习(17)-python函数基础部分

    http://www.cnblogs.com/BeginMan/p/3171977.html 一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/arch ...

  2. Python 函数基础、有序集合、文件操作(三)

    一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...

  3. python函数基础学习

    函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定  义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...

  4. 10分钟学会Python函数基础知识

    看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...

  5. Python函数基础和函数参数

    函数的定义和函数的调用 return的作用 三种参数的定义 常用的内置函数 len() 函数基础 函数的定义 def 函数名(参数): pass return 表达式 pass在这里表示什么都没有,不 ...

  6. python函数基础

    一.基础 函数的定义 def 函数名(参数): ... 函数体 ... 返回值 #如果函数执行完毕也没有return语句时,自动return None. 空函数 如果想定义一个什么事也不做的空函数,可 ...

  7. python 函数基础介绍

    函数是对程序逻辑进行结构化或过程化的一种编程方法.能将整块代码巧妙地隔离成易于管理的小块,把重复代码放在函数中而不是进行大量的拷贝. 一.函数创建 def 函数创建格式如下: def function ...

  8. Python函数基础学习(定义、函数参数、递归函数)

    1.本程序是测试函数的基础.函数的参数.递归函数的测试. 函数的参数有: 必选参数.默认参数.可变参数.命名关键字参数和关键字参数 #!/usr/bin/python # -*- coding: ut ...

  9. python函数基础 与文件操作

    函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...

  10. 4.python函数基础

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

随机推荐

  1. UVALive 4992 Jungle Outpost(半平面交判存)

    Jungle Outpost Time limit: 15.000 seconds Description There is a military base lost deep in the jung ...

  2. python3 requests库学习笔记(MOOC网)

    奏:HTTP协议对资源的操作 方法说明:GET 请求获取URL位置的资源HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息POST 请求向URL位置的资源后附加新的数据PUT 请求 ...

  3. python实现WordCount(第三次作业)

    0x00 注明 合作者:201631062315 201631062310 代码地址:https://gitee.com/c1e4r/word-count2 作业地址:https://edu.cnbl ...

  4. web storage 简单的网页留言版

    html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  5. C#语言是专门为.NET提供的开发语言(visual studio 2008序列号)

    .net是微软的一个平台在这个平台上的语言有C#.C++.VB等,其中C#是专门为.NET平台开发的语言,语法简洁美观.建议安装visual studio 2008,你可以去微软官方下载90天试用版, ...

  6. leetcode-165周赛-1276-不浪费原料的汉堡制作方案

    题目描述: 自己的提交: class Solution: def numOfBurgers(self, tomatoSlices: int, cheeseSlices: int) -> List ...

  7. vue中filters(过滤器)的使用

    在vue中使用filters Vue.js自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和 v-bind 表达式.过滤器应该被添加在 JavaScript 表达式的尾 ...

  8. 每天一个linux命令:touch(9)

    touch touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来:二是用来创建新的空文件 格式 touch [选项] [文件] 参数 ...

  9. [CSP模拟测试43、44]题解

    状态极差的两场.感觉现在自己的思维方式很是有问题. (但愿今天考试开始的一刻我不会看到H I J) A 考场上打了最短路+贪心,水了60. 然而正解其实比那30分贪心好想多了. 进行n次乘法后的结果一 ...

  10. springmvc缓存 - cache

    前几篇文章已经搭建了一个基本的springmvc demo,现在我们来完善下.    相信大家写程序的时候都接触过缓存的概念,也都知道,数据量大的时候缓存对于提高效率是很显著的.而缓存一般包括前台静态 ...