作用域

1
2
3
if 1 == 1:
 ​   name = 'alex'
print(name)
python中是没有块儿作用域的,所以python可以输出name
java/c中有块级作用域,提示name没有定义
Python中无块级作用域
1
2
3
4
# if 1 == 1:
#     name = 'alex'
# print(name)
#输出结果为alex
1
2
3
4
5
6
7
8
9
10
11
# for i in range(10):
#     name = i
# print((name))
#输出结果为:9
 
# def func():
#     name = 'alex'
# func()
#
# print(name)
#执行结果报错:name is notdefined
#Python中是由作用域链的,找变量的时候是由内向外找,知道找不到报错。
#提示:Python的作用域在执行前已经确定。  函数未执行前作用域链就已经确定了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
name = 'alex'
 
def f1():
    print(name)
 
def f2():
    name = 'eric'
"""
 
"""
name = 'alex'
 
def f1():
    print(name)
 
def f2():
    name = 'eric'
    return f1
ret = f2()
ret()
 
"""
 
"""
li = [lambda :x for x in range(10)]
r = li[0]()
print(r)
#li是列表
#li列表中的元素:【函数,函数,函数。。。。】
#函数在没有执行前,内部代码不执行
#?li[0],函数
#?函数()
#返回值是???
python2中默认经典类,如果继承object()是新式类
python3中默认新式类

I/O多路复用

​server端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import socket
import select
 
sk = socket.socket()
sk.bind(('127.0.0.1', 9999,))
sk.listen(5)
 
inputs = [sk, ]
 
while True:
    rlist, w, e = select.select(inputs,[],[],1)
    #inputs:列表中存放sk,和conn对象,如果有新连接请求过来,sk对象就会变化,rlist就等于sk,
    #如果是已经建立的连接,发过来消息,返回的就是conn的对象
    print(rlist)
    # 监听sk(服务器端)对象,入股osk对象发生变化,表示客户端来连接了,此时rlist值为[sk]
    # 监听conn对戏那个,如果conn发生变化,表示客户端有新消息发送过来了,此时rlist的值为[客户端]
    # rlist = [wuwenyu,]
    # rlist = [zhanglei, ]
    # rlist = [sk]
    # rlist 中socket对象列表,[sk,]
 
    for r in rlist:
        if r == sk:
            #新客户来连接,则建立新的conn,把conn加入到inputs列表中
            #如果r != sk,则是已经建立连接的对象,conn,那么conn接收消息。
            conn, address = r.accept()
            #conn是什么? 其实就是socket对象
            inputs.append(conn)
            conn.sendall(bytes('hello', encoding='utf-8'))
            #rlist = [sk,], rlist =[sk1,],rlist = [sk1,sk2]
            #rlist = []
        else:
            #有人给我发消息了
            r.recv(1024)

client端:

1
2
3
4
5
6
7
8
9
10
11
12
13
import socket
 
sk = socket.socket()
sk.connect(("127.0.0.1", 9999, ))
 
data = sk.recv(1024)
 
print(data)
 
while True:
    inp = input(">>>")
    sk.sendall(bytes(inp, encoding='utf-8'))
sk.close()

socket(二)的更多相关文章

  1. Python网络编程—socket(二)

    http://www.cnblogs.com/phennry/p/5645369.html 接着上篇博客我们继续介绍socket网络编程,今天主要介绍的内容:IO多路复用.多线程.补充知识点. 一.I ...

  2. 通信(二):进程间通信之socket

    一.为什么要学习socket? 我们打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?我们用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket.本地的进程间通 ...

  3. 通过Socket实现TCP编程(十二)

    原文链接:https://www.cnblogs.com/hysum/p/7531529.html Socket通信 : TCP协议是面向对象连接.可靠的.有序的,以字节流的方式发送数据. 基于TCP ...

  4. Nginx 之二: nginx.conf 配置及基本优化

    一:常用功能优化: 1:网络连接的优化: 只能在events模块设置,用于防止在同一一个时刻只有一个请求的情况下,出现多个睡眠进程会被唤醒但只能有一个进程可获得请求的尴尬,如果不优化,在多进程的ngi ...

  5. 【Socket编程】通过Socket实现TCP编程

    通过Socket实现TCP编程 Socket通信 : 1.TCP协议是面向对象连接.可靠的.有序的,以字节流的方式发送数据. 2.基于TCP协议实现网络通信的类: 客户端----Socket类 服务器 ...

  6. Python网络编程socket

    网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...

  7. python网络编程:socket套接字

    一.socket 二.TCP服务器 三.TCP客户端 四.UDP服务器 五.UDP客户端 六.聊天的客户端 七.聊天的服务器 一.socket """ 学习网络编程 其实 ...

  8. Android源码阅读 – Zygote

    @Dlive 本文档: 使用的Android源码版本为:Android-4.4.3_r1 kitkat (源码下载: http://source.android.com/source/index.ht ...

  9. 【读书笔记】iOS网络-底层网络

    在iOS上,有一个库叫做Core Foundation networking或CFNetwork,它是对原始Socket的轻量级封装,不过它很快对于大多数常见场景来说变得非常笨重了.最后,添加了另一层 ...

随机推荐

  1. ElasticSearch 自定义排序处理

    使用function_score进行分组处理,利用分组函数script_score进行自定义分值处理, 注意:使用script功能需要在配置中打开脚本功能: script.inline: on   s ...

  2. ElasticSearchwindow下搭建

    ElasticSearch是一个开源的分布式搜索引擎. 下载 下载地址: https://www.elastic.co/downloads/elasticsearch 当前版本:Elasticsear ...

  3. Scala的trait

    一:说明 1.介绍 2.功能 二:具体解释功能 1.定义接口 2.定义方法 3.定义字段 4.定义抽象字段 5.混合trait

  4. 利用 crontab 來做 Linux 固定排程

    crontab 介紹 crontab 是 Linux 內建的機制,可以根據設置的時間參數來執行例行性的工作排程. 上述這張圖可以清楚的顯示出前五項參數應該要帶進去的數字.依序是分鐘, 小時, 日期, ...

  5. 如何理解泛型中的new()约束

    一:为什么需要New约束 假设有这样一个需求,它需要在定义一个泛型类时同时实例化T对象.有网友说了:"这还不简单,我立刻给你写一个",刷刷刷,得到以下的例子. public cla ...

  6. Error : An error occurred while creating the WebJob schedule: Response status code does not indicate success: 409 (Conflict).

    How to fix the error? the answer is simple switch from Free to Standard...

  7. LUA table学习笔记

    function printT( ... ) for i,v in ipairs(...) do print(i,v) end end t1={} t2={} t3={} table.insert(t ...

  8. C#模拟Http与Https请求框架实例

    using System.Text; using System.Net; using System.IO; using System.Text.RegularExpressions; using Sy ...

  9. svg gradient

    SVG和canvas中是一样的,都是使用标准的HTML/CSS中的颜色表示方法,这些颜色都可以用于fill和stroke属性. 基本有下面这些定义颜色的方式: 1. 颜色名字: 直接使用颜色名字red ...

  10. Java被忽略的基本知识(一)

    工作一段时间发现Java的基本知识不是一般的重要,基本知识好项目理解快.特此看java的基本知识书本<Java项目实战开发>李兴华版,看完此书准备再看一下java更深一点的书--<J ...