首页 > 编程语言 >Python学习路程——Day11

Python学习路程——Day11

时间:2022-10-10 16:34:54浏览次数:173  
标签:路程 name Python age sex Day11 空间 def 名称

Python学习路程——Day11

函数参数

在使用函数参数时,一般情况下所需要遵循的规范:
	越短的、越简单的、越靠前
	越长的、越复杂的、越靠后
   同一个形参在调用的时候不能多次赋值

1、位置参数

'''
位置形参:
	函数定义阶段、括号内从左到右依次填写的变量名
	语法格式:
		def 函数名(a, b c):pass	
	注:当子代码只有一行而且很简单的情况下,可以直接在冒号后面编写,不用换行。

位置实参:
	函数调用阶段括号内从左到右依次填写的数据值
	语法格式:
		函数名(1, 2, 3)
'''
eg:
def func(a, b):
    print(a, b)
func(1, 2)

1.1位置参数所需要注意的事项:

'''
在使用实参传参的时候,要按照位置一一对应传值
实参传值的时候,既不能多一个,也不能少一个

实参没有固定的定义,可以传数据值,也可以传绑定了数据值的变量名
'''

2、关键字参数

'''
关键字传参:
	通过关键字进行传参
'''
eg:
func(a = 1, b = 2)
func(1, b=2)

3、默认参数

'''
本质其实就是关键字形参
'''
eg:
def register(name, age, sex = 'man'):
    print(name, age, sex)
register('Jason', '18')

4、可变长形参

用来接收多余的位置参数,组成元组赋值给*号后面变量名的 *变量名

'''
*号在形参中
	用于接收多余的位置参数,组成元组赋值给*号后面的变量名
'''
eg:
def login(a, *b):
    print(a, b)
login(1, 2, 3, 4, 5)

用来接收多余的关键字参数,组成字典的 **变量名

'''
**号在形参中
    用于接收多余的关键字参数 组织成字典的形式赋值给**号后面的变量名
'''
eg:
def user_dict(**kwargs):
    print(kwargs)
user_dict(name = 'Jason', age = '18', sex = 'woman')

接收位置参数的*号 和 接收关键字参数的**号连用

'''
在形参的定义中,有一个接收多余位置函数的 * 和一个用来接受多余关键字函数的 ** 在一起连用,会给我们提供很大的帮助,只要我们在传参数的时候遵循一定的规范,那么我们在传参的过程就不可能出错
'''
eg:
def user_dict(*args, **kwargs):
   print(args, kwargs)
user_dict(1, 2, 3, 4, name = 'Jason', age = '18', sex = 'woman')

'''
输出结果为:
	(1, 2, 3, 4) {'name': 'Jason', 'age': '18', 'sex': 'woman'}
'''

5、可变长实参

*号在实参中

'''
	类似于for循环,将所有循环遍历出来的数据按照位置参数,一次性的传给函数
'''
eg:
def func(a, b, c):
   print(a, b, c)

list_one = [11, 22, 33]
func(*list_one) # 11 22 33

tuple_one = (11, 22, 33)
func(*tuple_one) # 11 22 33

string_one = 'Tom'
func(*string_one) # T o m

set_one = {11, 22, 33} 
func(*set_one) # 集合无序,随机取出里面的数值 33 11 22

dict_one = {'name': 'Jason', 'age': '18', 'sex': 'Man'}
func(*dict_one) # 只取出k键 name age sex

**在实参中

'''
 将字典打散成关键字参数的形式传递给函数
'''
eg:
def user_index(name, age, sex):
   print(name, age, sex)

dict_demo = {'name': 'Jason', 'age': 16, 'sex': 'man'}
user_index(**dict_demo) # Jason 16 man

user_index(name= dict_demo.get('name'),
           age= dict_demo.get('age'),
           sex= dict_demo.get('sex')
           ) # Jason 16 man

6、命名关键字参数(浅浅的了解一下就okk了)

'''
形参必须按照关键字参数传值>>>:
	命名关键字参数
'''
def demo(name, *args, sex = 'man', **kwargs):
    print(name, args, sex, kwargs)
demo('Jaso', 110, age = 18) # Jaso (110,) man {'age': 18}
demo('Tony', 110, 120, 'woman', sex = ' woman', age = '18') 
# Tony (110, 120, 'woman')  woman {'age': '18'}

名称空间与作用域

1、名称空间

'''
什么时名称空间:
	名称空间就是用来存储变量名与数据值绑定关系的地方
'''
eg:
name = 'Maria' # 名称空间就是存储变量名 name 绑定 (Maria)地方

1.1 内置名称空间

'''
解释器运行自动产生,里面包含了很多的内置方法的名字
	关键字、内置方法、系统内置的一些可以调用的
'''
eg:
	len print input

1.2 全局名称空间

'''
Python文件运行时产生,里面存放文件级别的名字,存放的是当前py文件中(除去函数、类内部的)变量与值的对应关系以及函数名与函数的内存地址的对应关系。
'''
eg:
name = 'jason'

if name:
    age = 18

while True:
    sex = 'man'

def index():
    pass

class MyClass(object):
    pass
# name\age\gender\index\MyClass 这些都是全局变量名称

1.3 局部(临时)名称空间

'''
存放的是函数内部的变量与值的对应关系。
当一个函数被调用时,开辟临时名称空间,当函数执行结束后,临时名称空间消失。
如果一个函数被调用多次,则每调用一次,都要重新开辟临时名称空间。
'''

2、作用域

'''
两个作用域:全局作用域和局部作用域。
全局作用域:全局命名空间+内置命名空间
局部作用域:局部命名空间

存活周期
	内置名称空间
  		python解释器启动则创建 关闭则销毁
 	全局名称空间
    	py文件执行则创建 运行结束则销毁
 	局部名称空间
    	函数体代码运行创建 函数体代码结束则销毁(类暂且不考虑)
作用域
	内置名称空间
    	解释器级别的全局有效
 	全局名称空间
    	py文件级别的全局有效
 	局部名称空间
    	函数体代码内有效
'''

3、名字的查找顺序

'''
	凡是在涉及到名字的查找的时候,首先我们要明白我们在找名字的时候,在那个空间中。
	1.当我们在局部名称空间中的时候
		局部名称空间 >>> 全局名称空间 >>> 内置名称空间
	2.当我们在全局名称空间中的时候
		全局名称空间 >>> 内置名称空间
	ps:其实名字的查找顺序是可以打破的 
'''

练习:

'''
判断下列money的值是多少并说明理由 思考如何修改而不是新增绑定关系
	money = 100
	def index():
        money = 666	
 	print(money) # 100  因为是直接打印的,没有调用函数
    
   

	money = 100
 	def func1():
        money = 666
        def func2():
            money = 888
        func2()
   print(money) # 100 直接打印的是全局的那个money
'''

标签:路程,name,Python,age,sex,Day11,空间,def,名称
From: https://www.cnblogs.com/HaiMan/p/16776155.html

相关文章

  • python编程从入门到实践--第4章 操作列表
    一。遍历整个列表注意缩进,与不要遗漏冒号。magicians=['alice','david','carolina']formagicianinmagicians:#print(magician)print(f"{magician......
  • python命令行输入\n失效
    测试在命令行输入aaaa\ncc时,没有把\n变为换行python把aaaa\ncc变为了aaaa\\ncca=input('请输入:').strip()print(a)输出请输入:aaaa\nccaaaa\ncc......
  • 进入python的世界_day10_python基础——函数之参数、名称空间
    一、位置参数位置形参​ 函数定义阶段(函数定义第一行)括号内从左往右,依次填写变量名位置实参​ 函数调用阶段括号内从左往右,依次填写传入的数据值"""1.位置形参......
  • python连接Phoenix数据库
    参考:https://www.cnblogs.com/alexgl2008/articles/12703793.html1、连接后查询数据:    2、连接后插入数据:  执行结果: ......
  • Python面试
    1.Python是什么2.赋值、浅拷贝和深拷贝的区别https://www.cnblogs.com/kb-python/p/15998681.html1.赋值:就是简单对象的引用,并不会开辟新的内存空间,如下图,当a改变时,b......
  • python 函数的多个返回值,多种传参方式
    1.函数的多个返回值deftest_return():return1,2按照返回时顺序,写对应顺序的多个变量接手即可变量之间用逗号隔开支持不同类型的数据return2.函数的多种传参......
  • python练习题-数据类型-列表拼接,按指定字符串查找,首尾去空(三)
    1.问题描述。把下图中列表,元组,字典中的值,组成一个列表。并查找列表中元素,移除每个元素的空格,并查找以a或者A开头并且以c结尾的所有元素。li=["alec","aric","Alex","T......
  • python编程从入门到实践--第3章 列表简介
    一。列表及使用    列表相当于其它语言的数组,使用下标法引用,特殊之处可以用负数的下标引用尾部元素,-1最后一个元素,-2倒数第二个元素,依此类推。     bicy......
  • Python 快速入门
    学习Python的由来第一次接触Python时,是在刚毕业不久,那时公司在做一个网盘客户端,需要调研一些GUI框架。由于当时Python很火(当然,现在也一样),便尝试了一下PyQt(Python......
  • Zen of Python(Python之禅)
    Python之禅同样也适合MatlabZenofPython(Python之禅)Beautifulisbetterthanugly.(优美比丑陋好)Explicitisbetterthanimplicit.(清晰比晦涩好)Simpleisbet......