小编Den*_*nDo的帖子

使用全局变量作为默认值

我有一个函数,它需要很多参数,因为我不想记住它们的位置,所以我决定使用命名参数

def f(a=None, b=None, c=None):
    print a,b,c
f('test', c=5, b='second param')
>>> test second param 5
Run Code Online (Sandbox Code Playgroud)

现在,通常我一次只更改一个参数,所以我想通过只键入f(c = 3.14)来调用函数,其中预期结果为f(a = a,b = b,c = 3.14),即每个应该从本地范围读取未明确传递的参数.

但是当然它不起作用,因为使用命名参数我必须设置一个默认值,如果我使用**kwargs,它只是忽略参数

def f(**kwargs):
    print a,b,c
a=1; b=2; c=3
f(a=2, b=4, c=8)
>>> 1 2 3 # instead of 2 4 8
Run Code Online (Sandbox Code Playgroud)

我曾经为每个参数定义一个新函数,但我不喜欢这种方法,尽管到目前为止它是最有效的

def fc(c_new):
    return f(a, b, c_new)
Run Code Online (Sandbox Code Playgroud)

如何使函数使用当前作用域中的变量作为其命名参数的默认值?

python currying default-value optional-parameters

4
推荐指数
1
解决办法
2646
查看次数

Elasticsearch无法访问:连接被拒绝

我在VM内部的docker容器内运行ELK堆栈.
我可以把curl东西给ES,它在Kibana出现就好了.
我可以使用Logstash读取文件并将它们输出到stdout.
但Logstash无法将数据发送到ES

docker-compose.yml

version: '2'
services:
  elasticsearch:
    image: elasticsearch
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      xpack.security.enabled: "false"
      xpack.monitoring.enabled: "false"
      xpack.graph.enabled: "false"
      xpack.watcher.enabled: "false"
    networks:
      - elk

  logstash:
    image: docker.elastic.co/logstash/logstash:5.3.2
    volumes:
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
      - ./logstash/pipeline:/usr/share/logstash/pipeline
      - ./data:/usr/share/data
    ports:
      - "5000:5000"
      - "9600:9600"
    networks:
      - elk
    depends_on:
      - elasticsearch

  kibana:
    # kibana config

networks:
  elk:
    driver: bridge
Run Code Online (Sandbox Code Playgroud)

logstash.yml (启用或禁用xpack似乎没有区别)

#log.level: debug
xpack.monitoring.elasticsearch.password: changeme
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.url: http://127.0.0.1:9200
xpack.monitoring.enabled: false
Run Code Online (Sandbox Code Playgroud)

pipeline.conf

input {
# some files …
Run Code Online (Sandbox Code Playgroud)

elasticsearch logstash docker

4
推荐指数
1
解决办法
4220
查看次数