1.1. 基础函数

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

灌输一个概念:Python中函数就是对象,函数和我们之前的[1,2,3],'abc',8等一样都是对象,而且函数是最高级的对象(对象是类的实例化,可以调用相应的方法,函数是包含变量对象的对象)

既然函数是对象,那么自然满足下面两个条件:

1. 其可以被赋给其他变量

2. 其可以被定义在另外一个函数内(作为参数&作为返回值),类似于整形,字符串等对象。

f和f()的区别是: f是函数名,是一个变量,可以进行赋值操作里面存储量函数的内容

f():是真正的去操作这个函数,去执行函数存储的内容

特性:

1.代码重用

2.保持一致性

3.可扩展性

函数名的命名规则

1.函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号;

2.函数名是区分大小写的。

3.函数名不能是保留字

形参:形式参数,不是实际存在,是虚拟变量。

在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数,类型应与实参一一对应)

实参实际参数,调用函数时传给函数的参数,可以是常量,变量,表达式,函数,传给形参

区别:形参是虚拟的,不占用内存空间,.形参变量只有在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参

简单的函数实例

简单的函数实例: 形参,实参, 函数之间的调用,return语句, 文件的操作

import time
def now():
format_time = '%y-%m-%d %X'
current_time = time.strftime(format_time)
return current_time
def logger(n):
with open('log.txt', 'a+', encoding='utf-8') as f:
f.write("%s:%s\n" % (n, now()))
def say():
line = "现在是北京时间"
logger(line)
say()

特殊例子:

def f(){
global a
a = 12
}
print(a) # 直接打印报错,因为a虽然是全局变量,但是在内存中的只有函数名,函数的内容未执行
f()
print(a) # 函数被调用,函数内的全局a变量被赋值了

函数的参数

必备参数  ('hhh', 23)

关键字参数 (name='hhh',age=23)  (age=23, name='hhh')

默认参数 :默认参数在形参中添加,Py3.0中默认参数一定要跟在其他参数后面,否则会报错

不定长参数:

*args: 未命名式形参,传递过去元组处理

**keywords 命名式形参,传递过去一个键值对,用dict形式

不定长参数位置:def f(school='xupt', *args, **kwargs): 默认参数在最左边,*args在中间,**keywords在右边,否则报错 

必备参数,关键字参数,默认参数

默认参数

# 默认参数一定要跟在其他参数后面
def info(name='ftl', age=18, sex='male'):
print('name:%s' % name)
print('age :%d' % age)
print('sex :%s' % sex)
print('----------------------------------------')
info("hhh", 23)
info(age=23, name='hhh')
# 使用默认参数
info()
info('hahaha')

不定长参数:

*rags, 无命名参数,传递过去的是一个元组

**keywords, 命名式参数

不定长参数位置:def f(*args, **keywords)  args在左边,keywords在右边,否则报错

*rags, 无命名参数

def add(*args):
print(args)
print(sum(args)) add(1, 2, 3, 4, 5)

说明:# args的特殊用法:

def fun(*args):
print(args)
fun([1, 3, 5], [2, 4, 6])
fun(*[1, 3, 5], [2, 4, 6])
fun(*[1, 3, 5], *[2, 4, 6])

**keywords, 命名式参数

def info2(**kwargs):
for i in kwargs:
print(i, kwargs[i]) info2(name='ftl', age=23, sex='male')

说明: # kwargs的特殊用法:

def fun1(**kwargs):
print(kwargs)
# fun1({'name':'ftl'}) # 因为传递过去的不是一个键值对TypeError: fun1() takes 0 positional arguments but 1 was given
fun1(info={'name' : 'ftl'}) # 传递过去的key是info, value是一个字典
fun1(name='ftl', age=12, sex='male')
fun1(**{'name': 'ftl', 'age': 12, 'sex': 'male'})

不定长参数的混合使用,默认参数必须在最左边,因为不定长参数可为空,感觉混合使用的时候,是按照位置传递的参数

def info3(school='xupt', *args, **kwargs):
# print(args) # (1, 2, 3)
# print(kwargs) # {'age': 23, 'name': 'ftl', 'sex': 'male'}
for k in args:
print(k, end='\t')
print()
for i in kwargs:
print('%s --> %s' % (i, kwargs[i]))
info3(1, 2, 3, name='ftl', age=23, sex='male')
# SyntaxError: positional argument follows keyword argument
# info3(name='ftl', age=23, sex='male',1, 2, 3) # 位置错误
# def info4(**kwargs, *args): # 位置错误,Py3不支持这种做法

Python学习---基础函数的学习的更多相关文章

  1. python学习:函数的学习

    我们写东东的时候,往往有一些东西要频繁去复用,那么每个功能是10行代码,复用2次就是20行,这样看来我们的程序如果频繁利用某些代码的话,那么会是我们开发的东西越来越臃肿.那么好的方法有没有呢,那就是函 ...

  2. Python Tkinter 基础控件学习

    # -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get ...

  3. python语法基础-函数-迭代器和生成器-长期维护

    ###############    迭代器    ############## """ 迭代器 这是一个新的知识点 我们学习过的可以迭代的对象有哪些? list str ...

  4. Python语法基础-函数,类以及调试处理

    [TOC] 1. 函数的定义 python中函数有两种: python自带的函数 用户定义函数 返回多个值 原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同 ...

  5. Python编程基础[函数和面向对象](三)

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

  6. python语法基础-函数-内置函数和匿名函数-长期维护

    ##################     内置函数        #######################  """ 一共是 68个内置函数: 反射相关的内置函 ...

  7. python语法基础-函数-装饰器-长期维护

    ######################################################### # 装饰器 # 装饰器非常重要,面试Python的公司必问, # 原则:开放封闭原则 ...

  8. python语法基础-函数-进阶-长期维护

    ###############    函数的命名空间和作用域    ############## """ # 函数进阶 命名空间和作用域 命名空间 全局命名空间——我们自 ...

  9. python语法基础-函数-递归函数-长期维护

    ###############    递归   ############## # 递归的定义——在一个函数里再调用这个函数本身 # 递归的最大深度——998 # 二分查找算法 # 你观察这个列表,这是 ...

随机推荐

  1. 3dsmax2016卸载/安装失败/如何彻底卸载清除干净3dsmax2016注册表和文件的方法

    3dsmax2016提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dsmax2016失败提示3dsmax2016安装未完成,某些产品无法安装,也有时候想重新 ...

  2. Hive动态分区 参数配置及语法

    Hive本身是不支持动态分区的.. 但动态分区是真的方便啊..不然手动维护要累死..按日期甚至小时来分区时动辄就好几千上万的分区..手动到哪一年去..? 想要用动态分区要先做一些设置来修改默认的配置. ...

  3. 关于ASP.NET MVC+Repository+Service架构的一些思考

    看了一些ASP.NET MVC开源项目后的一些想法,关于ASP.NET MVC+Repository+Service架构的一些思考 最近在学习ASP.NET MVC 2.0的一些开源项目,发现这些项目 ...

  4. 使用java配置来构建spring项目

    java配置是Spring4.x推荐的配置方式,可以完全代替xml配置,java配置是通过@Configuration和@Bean来实现的.@Configuration声明当前类是一个配置类,相当于S ...

  5. HTML基础笔记

    html基础 (1)什么是html?超文本标记语言 用于开发网页的语言,由浏览器解释执行 (2)html文件的基本结构 <html> <head> <title>& ...

  6. Class and Instance Variables In Ruby

    https://github.com/unixc3t/mydoc/blob/master/blog/caiv.md

  7. 虚拟机下linux 的root密码忘记怎么修改(转)

    1.开机时任意按一个方向键,进入界面,选择linux系统,按e键进入 2.然后用上下键选择kerner(内核)那一行,按e键进入编辑界面,编辑界面最后一行显示如下:(grub edit> ker ...

  8. HDU 5701 ——中位数计数——————【思维题】

    中位数计数 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  9. 此请求的URL的长度超过配置的maxUrlLength值

    aps.net 网站的url长度默认限制为260个字符. 修改web.config即可   <system.web> <httpRuntime maxUrlLength=" ...

  10. Java复习第三天

    Day06 1.二维数组定义格式? (1)元素是一维数组的数组. (2)格式: A:数据类型[][] 数组名 = new 数据类型[m][n]; B:数据类型[][] 数组名 = new 数据类型[m ...